diff --git a/ChangeLog b/ChangeLog
index f0d013c99b35923b7dc750c9581b6931345b2669..b7b940189ee615630c3cb661c6c89fe438dab02b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+05-FEB-2019: 10.1.8
+
+- Fixes property focus after save
+- Updated AWS 2019 icon colors
+
 04-FEB-2019: 10.1.7
 
 - Adds auto-resolution for Google add-ons
diff --git a/VERSION b/VERSION
index bd5b39bc25bf0aa1542f3a784c91cf36170c355b..235778d45a201d9669def04dc07087a900d6792a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-10.1.7
\ No newline at end of file
+10.1.8
\ No newline at end of file
diff --git a/src/main/webapp/cache.manifest b/src/main/webapp/cache.manifest
index 8e1655ea0925ea9146b1789de4e8b2da15d22849..5a3fc3215b9adc6bd6174115e2a9b2ae9734dfdd 100644
--- a/src/main/webapp/cache.manifest
+++ b/src/main/webapp/cache.manifest
@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 02/04/2019 11:37 AM
+# 02/05/2019 02:53 PM
 
 app.html
 index.html?offline=1
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index 08038fda3d5e60ac683d88e5040b26b1d3d51b32..f4c530c230cac5bdd51a67cb9ca8ce5e623d9382 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -2015,6 +2015,8 @@ Editor.layersLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgC
 Editor.closeLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAUVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////8IN+deAAAAGnRSTlMAuvAIg/dDM/QlOeuFhj0S5s4vKgzjxJRQNiLSey0AAADNSURBVDjLfZLbEoMgDEQjRRRs1XqX///QNmOHJSnjPkHOGR7IEmeoGtJZstnwjqbRfIsmgEdtPCqe9Ynz7ZSc07rE2QiSc+qv8TvjRXA2PDUm3dpe82iJhOEUfxJJo3aCv+jKmRmH4lcCjCjeh9GWOdL/GZZkXH3PYYDrHBnfc4D/RVZf5sjoC1was+Y6HQxwaUxFvq/a0Pv343VCTxfBSRiB+ab3M3eiQZXmMNBJ3Y8pGRZtYQ7DgHMXJEdPLTaN/qBjzJOBc3nmNcbsA16bMR0oLqf+AAAAAElFTkSuQmCC";
 Editor.editLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA+hzi3nRQWyXzkm0h2j3u54gzEgSXjlYoTBgJxL2loGpAOS3Jt7Wxm35Ga7gRAAAA6UlEQVQ4y63Q2XaCMBSF4Q0JBasoQ5DJqbXjfv8HbCK2BZNwo/8FXHx7rcMC7lQu0iX8qU/qtvAWCpoqH8dYzS0SwaV5eK/UAf8X9pd2CWKzuF5Jrftp1owXwnIGLUaL3PYndOHf4kNNXWrXK/m7CHunk7K8LE6YtBpcknwG9GKxnroY+ylBXcx4xKyx/u/EuXi509cP9V7OO1oyHnzrdFTcqLG/4ibBA5pIMr/4xvKzuQDkVy9wW8SgBFD6HDvuzMvrZcC9QlkfMzI7w64m+b4PqBMNHB05lH21PVxJo2/fBXxV4hB38PcD+5AkI4FuETsAAAAASUVORK5CYII=";
 Editor.previousLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFZJREFUOMvdkskRgDAMA4lDwg2B7b9XOlge/KKvdsa25KFb5XlRvxXC/DNBEv8IFNjBgGdDgXtFgTyhwDXiQAUHCvwa4Uv6mR6UR+1led2mVonvl+tML45qCQNQLIx7AAAAAElFTkSuQmCC";Editor.nextLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg==";
+Editor.refreshLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAErnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarVdrlispCP7PKmYJouJjOT7PuTuY5c+HZZJKOkmn+055UioiIB9ghca/fyb9g8dyDOQlppBDMHh89tkWDJI5nqNn49d7PXYvYX5Hp+uCBcmhd8c0jM1fQJfbhug3vd7TKbYtJ21Be+Ei0Klm1bb50hbk7EHnPae89xV/Os7+zWbXstRj6XHuI5zRBfKcJTscO4N3Ui0OFrjsitOxvsUqhTG2Li7KC9/RdfjgvOvowXembLq7dwWZsBnCg482neW575aHzhbxTfPdQsgmmvNz9t3sac5xnK74AE8F2oe6HGWNwAh3ere2BbSIn2AcV8toCUdsQKwDzYrWiDNbeHuy586FJ4/VN24w0dthI3prm3WLlly02bYFitfG00bA08kl4NGAmgPZXm3hpTcvfY0TNHcGp2UIY+z40ugZ8TftKmhODV1mk66+gl1WYxpmKHL6BhcA4bl9Ksu/q9EpbswJWAcEZbk54YDF1ENEFb7Flls4O/CJ8WSO1ODYtwC4CLoFxiCiPZvATjiwidZGZvgxAZ8Cy63ztgIBFrGdaQIb5wLASVZ1Y0/kxWvFHmSUFgAhLiBJkiYQwPJeED/RJ8RQESeeRCRIlCRZSnDBBwkhxKA1qkQXfZQYYowp5liSSz5JCimmlHIq2WaHEiY55Eg55ZxLgdIC0QW7CzhKqba66qvUUGNNNdfSED7NN2mhxZZabqXb7jrSv4ceqaeeexk8EErDDxlhxJFGHmUi1qabfsoMM8408yxX1Daq96jxA3LvUeONmiLmF1+8oQZyjBcRrOVEFDMgZj0D8agIIKCtYmYSe28VOcXMZIukEAvUWBSczooYEPSDrUy+YndD7i1uJP5HuNlXyJFC938gRwrdRu4rbk9Q62XdKG4BpFmoPjVuorCBYaRiU9E76eN+1llySMahUBZbB82pgxvh6TwdhFiWpMXw2NOrhZf9rO0Qi4PWEeDRtUI/EPHa7t4C1eaKMs7aS2ldb2DEQ6kIC1z0DVeyxD6cTBNFL2hh/9ALkBDca+yrUrGf/6an1wwZVhjExuxr8MUMh2GoHQfSQ9KPHP2mfymI4VJ8HGm4rMEpiNTXZSZzcfpaopeBV8fiAcQqSV5EJmR1FVooLeaPY9vrroDtYw1OR3OXmHgdgcl85iO1p6ZcRi+f+/aLC2kdE9KSG2uAcjqfRJ32Dkcy9sXR6YEAFSGvwEFA66E/jUg6RV5GInA9mQBRqMYdieL2tCNhTjNJiEy9lj2O9nEmXDVhxppfvAzYM7qfvpmNHjleBH1VQyt5D14l/3pGS1Uz8qN0fyKS7qf2KELuAvwialVag+f16OjpgXACfg3f7b0pGxKpofK913aUye8spG/VHb55bxnEUur6h09C+TxrV3KOPbgs0Lv8PBWvxxukzAWSP8XRCdIhDhqs1Sv0fQnYKo5kXwv0ztyf9PSLUv+00tFH1nxgK/29LUdP20PXq8JoEd82XGZr//0nAIq/bPpxecDZaeA77bNvo+sVBTkOcvjGQT/7vHrd0129HqUcF9elfOOrJDaO/vvkpde5iu/FjH/P/wGZHRMfLTnvnwAAAAJiS0dEAP+Hj8y/AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wIFCRsCWfPx5wAAAnVJREFUSMfNlT1oU1EYht+TpLG2tqJVCqI2BXFQEcGiKGjRwUlKlVIFcalCHXTwb3FxEAedHDp1C0IFoTg4VQS1KlJLxani0oiKIk1r0/8kvedxyM1tbm6uVETwu9t33vc939/5rvSXZsIOrExEEUWErGyW6pULZBVfoz06rBZtUZ2sJvRRr/VSKeMUMfNabeapDZKnRA1dDLOI3yzjPGAfkcuSMLTxiP2ZYNjs4glLhNkMd1mP4SSTwD3rj98ajvGZ35vlOZf4CUCPNVKsSHdkjqpPDVp2/NAnpRVVoxJqcKtl1KpDigRy/ya2M+bds8QgnWwijsFQTTMXGMWWRdNTkgJx+r2DDNepyfkucMRGesuq4xNoI+e6p+kkGKIwnCYbIkCcAdfpcCOE3s5kaArsJOM631MXpA+J4wG6KxCRpqSDqi8oqdfOBAVapA6tC7hnpWIbR3RbkrSgh9EK8x4Vd5RSlc+5qPvDeNNv3S8V8mSGPETxczSk/8NMoUll+UnYfLQiwcNCPlIoIkZXdL5svqcj3XoXpC9JHbolI2nKdOhLQSrGcKDHDl0V71/FKxcxxoaiM8ZIgJ6stG7mRDt5F5PEhAlYktQH6RmRYNTFZDmyHFa5QIrNQXpOJHjhYR5TFS5gGeQA0YWS0hHnBB88RJq9UwoXAJijnzPsZisJWujmmffcIctFSrehJ2D57ts6llnGSbPgk85xE//UuAIOSZro86pc2TJcJTB0UQZwCpWnmnOkAtuv2Nw3tFZYNzmxjVPFvlvRyDXeMl0i45DmKWepza/s35hXrEbN2qEmrZWjCaU0qq8m98cvLScrp7B4/p39Au+cBBvd+o3cAAAAAElFTkSuQmCC";
+Editor.backLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADxnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjatVZbkuQoDPznFHsEJCEexwEDEXuDOf4mmHq7e6vcPUWUhWUhJZmAbdqff7v5Bz+2wsZpiD55b/FzySXO6ES7/3ZL1s3r/PF6hPsHv7k+YLgEVvZb31Z8hl9vA4Jb/vLoN2FbeeJKtB5cEsqoPKqtuLgSCe9+WvcmrXHZ3U1n/bvf09JK/nzvAsioaidH3ITE4hpHFQECSZJl9MdVeXgIfZ5+lXTMnbl2n8i79p64s3n55ZEKY/0K8E8cLT/pMXeToXtEdKv88KDma4lX7nqNvbd9dtl5MOXNmtRlKrOHwAIqZQ7zaAF/RT/MltAiprhBsQo1C9pmKBGD7U6OKmXq1KbdaANEx40DLPPGMn1RAifepihuNOocIEM1EqHHBtUEbr5ioVk3zXobRVSuhEgmJCOMeGnmyHmmXRP1vu1LLV65Ai4eaxowhnLjiigIQn1xqpPf2czdurF3wgoU1ElzxASzLXuKonRbWzJ1FsSpdcbuW4NCXQlAEWorwGBFO7KeRMmTDcyBCDxG6JOBnMVxgQKkypVMhzYiHuJEHrUxJtCMZeXdjaMFQqh4CZAGGwViOadYP8FFrKGsos6oqtegUZNmL9559d4HP86oHCS4oMGHEGJIIUeJLmr0McQYU8yJk+AI0+RTMCmmlHJG0YzUGaMzInIuXKS4osWXUGJJJW9YPpvbdPNb2OKWtly5SsX2r74GU2NNNTdqWErNNW2+hRZbarljrXXprmv3PfTYU89X1Zaqj6rRk3Lfq0ZLtaGYm3HhphrcIVxS0DhOdGgGxdgRFA9DASxoHprZSM7xUG5oZhNjUyhDNdIhTqWhGBR0jVg7XbW7KfetbkbdR7rxV8qZId1vKGeGdEu5V90OVKt5vlFkCjR24eDUSsfBhoAWM8c83kmnrXl0lNaxsx+jejyR6KwtzbwiGLa08d75wdTeR/AMwJxFcBLRkQjDpuLmFlbC99H4nsDlh/arRKH26orT8d0ynDfLii8heRlmfgnQJREAgIOv0G327URnkUwG8BIZXyNPFJD2PfCVnW+t+XQA7ODhpbw5V//Vmp/g2FXYhTKTkh/jsfuCfA9PcTgz49wuDTtE89wr+8bhaKyM/bo/RZi/PvnQms8HytrA88ToBef0uDNPMQtdn5P4pIg5M40jdOYe3jG697gz59G8JDomb8WMN+89vAJ4dJTN/Aqcg0QD3hfg1mLcz+6F8TbW8C+RZP5H27fR/TWOPkZ34erbqeFrKJn/AEE/tAwjCLp7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAuJAAALiQE3ycutAAAAB3RJTUUH4wIFCR4CJIQFogAAAWRJREFUWMPFlztLA0EURjdqJNk0gTQhkEdjYWdhIyI2YusPsbOztbFKI4ggaSxSa6FdQIgQtFKwCwhxEQI2isEHWeYeC2fxkkYLvfvBsM0w5yyX/YYNgn8IsAGMgFZgHWANeOcrH9bwFeCV72xawpcm4NuW8AXgWcGblvA5YKjgB5bwOhApeMsSXgUGCt52zmVM4CJSBvoKfioiWas3LwI3Cn4O5K3gIdBT8AsgtIR3FfwSKFjNPAd0FPwWKFnBZ4ATBb8DKpafW1PB74Ga9QUz8vAIaPz1+VO/2DP2z6xf5vf7jhpBBNRNBZxzGaCtJAZA1VRCRGaBMyXRF5Gy9SjyvnaTXANFa4nQ12+SnlkVK4kCcKUkumlIlHwdJ+mISM5aouJrOcmxiExbS9R8PSc5iuPYvKgawIOSOEyjLeeBRyWxn4bEIvCiJHbTkFie+DvaSkNiFXjzAuMgjQDrwBOw99PeT/vzU1TSg3fFAAAAAElFTkSuQmCC";
 Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.popupsAllowed=!0;mxUtils.extend(Editor,mxEventSource);Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0;
 Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))};
 Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a};
@@ -2034,11 +2036,11 @@ Editor.prototype.setFilename=function(a){this.filename=a};
 Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(a,d){c.undoableEditHappened(d.getProperty("edit"))};var d=mxUtils.bind(this,function(a,c){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,d);a.getView().addListener(mxEvent.UNDO,d);d=function(b,c){var d=a.getSelectionCellsForChanges(c.getProperty("edit").changes);a.getModel();for(var f=[],g=0;g<d.length;g++)null!=a.view.getState(d[g])&&f.push(d[g]);a.setSelectionCells(f)};
 c.addListener(mxEvent.UNDO,d);c.addListener(mxEvent.REDO,d);return c};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,c,d,b,f,e,h,g,k,l){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,n=b,u=mxUtils.getDocumentSize(),q=u.height,r=Math.max(1,Math.round((u.width-d-64)/2)),t=Math.max(1,Math.round((q-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=null!=document.body?Math.min(d,document.body.scrollWidth-64):d;b=Math.min(b,q-64);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=q+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";r+=u.x;t+=u.y;f&&document.body.appendChild(this.bg);var w=a.createDiv(k?"geTransDialog":"geDialog");f=this.getPosition(r,t,d,b);r=f.x;t=f.y;w.style.width=
-d+"px";w.style.height=b+"px";w.style.left=r+"px";w.style.top=t+"px";w.style.zIndex=this.zIndex;w.appendChild(c);document.body.appendChild(w);!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=t+14+"px",e.style.left=r+d+38-m+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
-document.body.appendChild(e),this.dialogImg=e,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(b){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,n=b=e.h)}e=mxUtils.getDocumentSize();q=e.height;this.bg.style.height=q+"px";r=Math.max(1,Math.round((e.width-d-64)/2));t=Math.max(1,Math.round((q-b-a.footerHeight)/3));d=null!=document.body?Math.min(p,document.body.scrollWidth-64):p;b=Math.min(n,q-64);e=this.getPosition(r,
-t,d,b);r=e.x;t=e.y;w.style.left=r+"px";w.style.top=t+"px";w.style.width=d+"px";w.style.height=b+"px";!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=t+14+"px",this.dialogImg.style.left=r+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
+function Dialog(a,c,d,b,f,e,h,g,k,l){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,n=b,u=mxUtils.getDocumentSize(),r=u.height,q=Math.max(1,Math.round((u.width-d-64)/2)),t=Math.max(1,Math.round((r-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=null!=document.body?Math.min(d,document.body.scrollWidth-64):d;b=Math.min(b,r-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),
+this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=r+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";q+=u.x;t+=u.y;f&&document.body.appendChild(this.bg);var w=a.createDiv(k?"geTransDialog":"geDialog");f=this.getPosition(q,t,d,b);q=f.x;t=f.y;w.style.width=
+d+"px";w.style.height=b+"px";w.style.left=q+"px";w.style.top=t+"px";w.style.zIndex=this.zIndex;w.appendChild(c);document.body.appendChild(w);!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=t+14+"px",e.style.left=q+d+38-m+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
+document.body.appendChild(e),this.dialogImg=e,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(b){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,n=b=e.h)}e=mxUtils.getDocumentSize();r=e.height;this.bg.style.height=r+"px";q=Math.max(1,Math.round((e.width-d-64)/2));t=Math.max(1,Math.round((r-b-a.footerHeight)/3));d=null!=document.body?Math.min(p,document.body.scrollWidth-64):p;b=Math.min(n,r-64);e=this.getPosition(q,
+t,d,b);q=e.x;t=e.y;w.style.left=q+"px";w.style.top=t+"px";w.style.width=d+"px";w.style.height=b+"px";!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=t+14+"px",this.dialogImg.style.left=q+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
 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+
@@ -2061,14 +2063,14 @@ var PageSetupDialog=function(a){function c(){null==m||m==mxConstants.NONE?(l.sty
 "100%";h.style.height="100%";var g=document.createElement("tbody");f=document.createElement("tr");e=document.createElement("td");e.style.verticalAlign="top";e.style.fontSize="10pt";mxUtils.write(e,mxResources.get("paperSize")+":");f.appendChild(e);e=document.createElement("td");e.style.verticalAlign="top";e.style.fontSize="10pt";var k=PageSetupDialog.addPageFormatPanel(e,"pagesetupdialog",b.pageFormat);f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");
 mxUtils.write(e,mxResources.get("background")+":");f.appendChild(e);e=document.createElement("td");e.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var l=document.createElement("button");l.style.width="18px";l.style.height="18px";l.style.marginRight="20px";l.style.backgroundPosition="center center";l.style.backgroundRepeat="no-repeat";var m=b.background;c();mxEvent.addListener(l,"click",function(b){a.pickColor(m||"none",function(a){m=a;c()});mxEvent.consume(b)});
 e.appendChild(l);mxUtils.write(e,mxResources.get("gridSize")+":");var p=document.createElement("input");p.setAttribute("type","number");p.setAttribute("min","0");p.style.width="40px";p.style.marginLeft="6px";p.value=b.getGridSize();e.appendChild(p);mxEvent.addListener(p,"change",function(){var a=parseInt(p.value);p.value=Math.max(1,isNaN(a)?b.getGridSize():a)});f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");mxUtils.write(e,mxResources.get("image")+
-":");f.appendChild(e);e=document.createElement("td");var n=document.createElement("a");n.style.textDecoration="underline";n.style.cursor="pointer";n.style.color="#a0a0a0";var u=b.backgroundImage;mxEvent.addListener(n,"click",function(b){a.showBackgroundImageDialog(function(a){u=a;d()});mxEvent.consume(b)});d();e.appendChild(n);f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");e.colSpan=2;e.style.paddingTop="16px";e.setAttribute("align","right");var q=
-mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});q.className="geBtn";a.editor.cancelFirst&&e.appendChild(q);var r=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.gridSize!==p.value&&b.setGridSize(parseInt(p.value));var c=new ChangePageSetup(a,m,u,k.get());c.ignoreColor=b.background==m;c.ignoreImage=(null!=b.backgroundImage?b.backgroundImage.src:null)===(null!=u?u.src:null);b.pageFormat.width==c.previousFormat.width&&b.pageFormat.height==c.previousFormat.height&&
-c.ignoreColor&&c.ignoreImage||b.model.execute(c)});r.className="geBtn gePrimaryBtn";e.appendChild(r);a.editor.cancelFirst||e.appendChild(q);f.appendChild(e);g.appendChild(f);h.appendChild(g);this.container=h};
-PageSetupDialog.addPageFormatPanel=function(a,c,d,b){function f(a,b,c){if(c||p!=document.activeElement&&n!=document.activeElement){a=!1;for(b=0;b<q.length;b++)c=q[b],v?"custom"==c.key&&(g.value=c.key,v=!1):null!=c.format&&("a4"==c.key?826==d.width?(d=mxRectangle.fromRectangle(d),d.width=827):826==d.height&&(d=mxRectangle.fromRectangle(d),d.height=827):"a5"==c.key&&(584==d.width?(d=mxRectangle.fromRectangle(d),d.width=583):584==d.height&&(d=mxRectangle.fromRectangle(d),d.height=583)),d.width==c.format.width&&
+":");f.appendChild(e);e=document.createElement("td");var n=document.createElement("a");n.style.textDecoration="underline";n.style.cursor="pointer";n.style.color="#a0a0a0";var u=b.backgroundImage;mxEvent.addListener(n,"click",function(b){a.showBackgroundImageDialog(function(a){u=a;d()});mxEvent.consume(b)});d();e.appendChild(n);f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");e.colSpan=2;e.style.paddingTop="16px";e.setAttribute("align","right");var r=
+mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});r.className="geBtn";a.editor.cancelFirst&&e.appendChild(r);var q=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.gridSize!==p.value&&b.setGridSize(parseInt(p.value));var c=new ChangePageSetup(a,m,u,k.get());c.ignoreColor=b.background==m;c.ignoreImage=(null!=b.backgroundImage?b.backgroundImage.src:null)===(null!=u?u.src:null);b.pageFormat.width==c.previousFormat.width&&b.pageFormat.height==c.previousFormat.height&&
+c.ignoreColor&&c.ignoreImage||b.model.execute(c)});q.className="geBtn gePrimaryBtn";e.appendChild(q);a.editor.cancelFirst||e.appendChild(r);f.appendChild(e);g.appendChild(f);h.appendChild(g);this.container=h};
+PageSetupDialog.addPageFormatPanel=function(a,c,d,b){function f(a,b,c){if(c||p!=document.activeElement&&n!=document.activeElement){a=!1;for(b=0;b<r.length;b++)c=r[b],v?"custom"==c.key&&(g.value=c.key,v=!1):null!=c.format&&("a4"==c.key?826==d.width?(d=mxRectangle.fromRectangle(d),d.width=827):826==d.height&&(d=mxRectangle.fromRectangle(d),d.height=827):"a5"==c.key&&(584==d.width?(d=mxRectangle.fromRectangle(d),d.width=583):584==d.height&&(d=mxRectangle.fromRectangle(d),d.height=583)),d.width==c.format.width&&
 d.height==c.format.height?(g.value=c.key,e.setAttribute("checked","checked"),e.defaultChecked=!0,e.checked=!0,h.removeAttribute("checked"),h.defaultChecked=!1,h.checked=!1,a=!0):d.width==c.format.height&&d.height==c.format.width&&(g.value=c.key,e.removeAttribute("checked"),e.defaultChecked=!1,e.checked=!1,h.setAttribute("checked","checked"),h.defaultChecked=!0,a=h.checked=!0));a?(k.style.display="",m.style.display="none"):(p.value=d.width/100,n.value=d.height/100,e.setAttribute("checked","checked"),
 g.value="custom",k.style.display="none",m.style.display="")}}c="format-"+c;var e=document.createElement("input");e.setAttribute("name",c);e.setAttribute("type","radio");e.setAttribute("value","portrait");var h=document.createElement("input");h.setAttribute("name",c);h.setAttribute("type","radio");h.setAttribute("value","landscape");var g=document.createElement("select");g.style.marginBottom="8px";g.style.width="202px";var k=document.createElement("div");k.style.marginLeft="4px";k.style.width="210px";
 k.style.height="24px";e.style.marginRight="6px";k.appendChild(e);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));k.appendChild(c);h.style.marginLeft="10px";h.style.marginRight="6px";k.appendChild(h);var l=document.createElement("span");l.style.width="100px";mxUtils.write(l,mxResources.get("landscape"));k.appendChild(l);var m=document.createElement("div");m.style.marginLeft="4px";m.style.width="210px";m.style.height="24px";var p=document.createElement("input");
-p.setAttribute("size","7");p.style.textAlign="right";m.appendChild(p);mxUtils.write(m," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";m.appendChild(n);mxUtils.write(m," in");k.style.display="none";m.style.display="none";for(var u={},q=PageSetupDialog.getFormats(),r=0;r<q.length;r++){var t=q[r];u[t.key]=t;var w=document.createElement("option");w.setAttribute("value",t.key);mxUtils.write(w,t.title);g.appendChild(w)}var v=!1;f();a.appendChild(g);mxUtils.br(a);
+p.setAttribute("size","7");p.style.textAlign="right";m.appendChild(p);mxUtils.write(m," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";m.appendChild(n);mxUtils.write(m," in");k.style.display="none";m.style.display="none";for(var u={},r=PageSetupDialog.getFormats(),q=0;q<r.length;q++){var t=r[q];u[t.key]=t;var w=document.createElement("option");w.setAttribute("value",t.key);mxUtils.write(w,t.title);g.appendChild(w)}var v=!1;f();a.appendChild(g);mxUtils.br(a);
 a.appendChild(k);a.appendChild(m);var z=d,x=function(a,c){var e=u[g.value];null!=e.format?(p.value=e.format.width/100,n.value=e.format.height/100,m.style.display="none",k.style.display=""):(k.style.display="none",m.style.display="");e=parseFloat(p.value);if(isNaN(e)||0>=e)p.value=d.width/100;e=parseFloat(n.value);if(isNaN(e)||0>=e)n.value=d.height/100;e=new mxRectangle(0,0,Math.floor(100*parseFloat(p.value)),Math.floor(100*parseFloat(n.value)));"custom"!=g.value&&h.checked&&(e=new mxRectangle(0,0,
 e.height,e.width));c&&v||e.width==z.width&&e.height==z.height||(z=e,null!=b&&b(z))};mxEvent.addListener(c,"click",function(a){e.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(l,"click",function(a){h.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(p,"blur",x);mxEvent.addListener(p,"click",x);mxEvent.addListener(n,"blur",x);mxEvent.addListener(n,"click",x);mxEvent.addListener(h,"change",x);mxEvent.addListener(e,"change",x);mxEvent.addListener(g,"change",function(a){v="custom"==g.value;
 x(a,!0)});x();return{set:function(a){d=a;f(null,null,!0)},get:function(){return z},widthInput:p,heightInput:n}};
@@ -2098,16 +2100,16 @@ this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mx
 arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32==a.which?(e=!0,this.hoverIcons.reset(),b.container.style.cursor="move",b.isEditing()||mxEvent.getSource(a)!=b.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){b.container.style.cursor="";e=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var g=b.panningHandler.isForcePanningEvent;
 b.panningHandler.isForcePanningEvent=function(a){return g.apply(this,arguments)||e||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var k=b.cellEditor.isStopEditingEvent;b.cellEditor.isStopEditingEvent=function(a){return k.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||
 mxClient.IS_SF&&mxEvent.isShiftDown(a))};var l=!1,m=null,p=null,n=null,u=mxUtils.bind(this,function(){if(null!=this.toolbar&&l!=b.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,c=[];null!=a;){var d=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),c.push(a));a=d}a=this.toolbar.fontMenu;d=this.toolbar.sizeMenu;if(null==n)this.toolbar.createTextToolbar();else{for(var e=0;e<n.length;e++)this.toolbar.container.appendChild(n[e]);this.toolbar.fontMenu=
-m;this.toolbar.sizeMenu=p}l=b.cellEditor.isContentEditing();m=a;p=d;n=c}}),q=this,r=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){r.apply(this,arguments);u();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=q.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length-
-1)&&(d=d.substring(0,d.length-1));q.toolbar.setFontName(d);q.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){t.apply(this,arguments);u()};b.container.setAttribute("tabindex","0");b.container.style.cursor=
-"default";if(window.self===window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(C){}var w=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();w.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler=
+m;this.toolbar.sizeMenu=p}l=b.cellEditor.isContentEditing();m=a;p=d;n=c}}),r=this,q=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){q.apply(this,arguments);u();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=r.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length-
+1)&&(d=d.substring(0,d.length-1));r.toolbar.setFontName(d);r.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){t.apply(this,arguments);u()};b.container.setAttribute("tabindex","0");b.container.style.cursor=
+"default";if(window.self===window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(D){}var w=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();w.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler=
 this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var v="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),z="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var c=b.view.getState(a);if(null!=c){a=a.clone();a.style="";a=b.getCellStyle(a);var d=[],e=[],f;for(f in c.style)a[f]!=c.style[f]&&(d.push(c.style[f]),e.push(f));f=b.getModel().getStyle(c.cell);for(var g=null!=f?f.split(";"):[],h=0;h<
 g.length;h++){var k=g[h],l=k.indexOf("=");0<=l&&(f=k.substring(0,l),k=k.substring(l+1),null!=a[f]&&"none"==k&&(d.push(k),e.push(f)))}b.getModel().isEdge(c.cell)?b.currentEdgeStyle={}:b.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",e,"values",d,"cells",[c.cell]))}};this.clearDefaultStyle=function(){b.currentEdgeStyle=mxUtils.clone(b.defaultEdgeStyle);b.currentVertexStyle=mxUtils.clone(b.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",
-[],"cells",[]))};var x=["fontFamily","fontSize","fontColor"],E="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(c=0;c<D[a].length;c++)v.push(D[a][c]);for(a=0;a<z.length;a++)0>mxUtils.indexOf(v,
-z[a])&&v.push(z[a]);var F=function(a,c){var d=b.getModel();d.beginUpdate();try{if(c)for(var e=d.isEdge(k),f=e?b.currentEdgeStyle:b.currentVertexStyle,e=["fontSize","fontFamily","fontColor"],g=0;g<e.length;g++){var h=f[e[g]];null!=h&&b.setCellStyles(e[g],h,a)}else for(h=0;h<a.length;h++){for(var k=a[h],l=d.getStyle(k),m=null!=l?l.split(";"):[],B=v.slice(),g=0;g<m.length;g++){var p=m[g],A=p.indexOf("=");if(0<=A){var n=p.substring(0,A),U=mxUtils.indexOf(B,n);0<=U&&B.splice(U,1);for(var q=0;q<D.length;q++){var u=
-D[q];if(0<=mxUtils.indexOf(u,n))for(var t=0;t<u.length;t++){var r=mxUtils.indexOf(B,u[t]);0<=r&&B.splice(r,1)}}}}for(var f=(e=d.isEdge(k))?b.currentEdgeStyle:b.currentVertexStyle,C=d.getStyle(k),g=0;g<B.length;g++){var n=B[g],w=f[n];null==w||"shape"==n&&!e||e&&!(0>mxUtils.indexOf(z,n))||(C=mxUtils.setStyle(C,n,w))}d.setStyle(k,C)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){F(b.getProperty("cells"))});b.addListener("textInserted",function(a,b){F(b.getProperty("cells"),!0)});
-b.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));F(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(x,
-d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!=h[g])if(0<=mxUtils.indexOf(z,d[g]))f||0<=mxUtils.indexOf(E,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(v,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(v,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g];if(f||k||0<=mxUtils.indexOf(E,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=
+[],"cells",[]))};var x=["fontFamily","fontSize","fontColor"],F="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),C=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<C.length;a++)for(c=0;c<C[a].length;c++)v.push(C[a][c]);for(a=0;a<z.length;a++)0>mxUtils.indexOf(v,
+z[a])&&v.push(z[a]);var E=function(a,c){var d=b.getModel();d.beginUpdate();try{if(c)for(var e=d.isEdge(k),f=e?b.currentEdgeStyle:b.currentVertexStyle,e=["fontSize","fontFamily","fontColor"],g=0;g<e.length;g++){var h=f[e[g]];null!=h&&b.setCellStyles(e[g],h,a)}else for(h=0;h<a.length;h++){for(var k=a[h],l=d.getStyle(k),m=null!=l?l.split(";"):[],B=v.slice(),g=0;g<m.length;g++){var p=m[g],A=p.indexOf("=");if(0<=A){var n=p.substring(0,A),U=mxUtils.indexOf(B,n);0<=U&&B.splice(U,1);for(var r=0;r<C.length;r++){var u=
+C[r];if(0<=mxUtils.indexOf(u,n))for(var D=0;D<u.length;D++){var t=mxUtils.indexOf(B,u[D]);0<=t&&B.splice(t,1)}}}}for(var f=(e=d.isEdge(k))?b.currentEdgeStyle:b.currentVertexStyle,q=d.getStyle(k),g=0;g<B.length;g++){var n=B[g],w=f[n];null==w||"shape"==n&&!e||e&&!(0>mxUtils.indexOf(z,n))||(q=mxUtils.setStyle(q,n,w))}d.setStyle(k,q)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){E(b.getProperty("cells"))});b.addListener("textInserted",function(a,b){E(b.getProperty("cells"),!0)});
+b.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));E(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(x,
+d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!=h[g])if(0<=mxUtils.indexOf(z,d[g]))f||0<=mxUtils.indexOf(F,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(v,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(v,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g];if(f||k||0<=mxUtils.indexOf(F,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=
 h[g]}}null!=this.toolbar&&(this.toolbar.setFontName(b.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(b.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==b.currentEdgeStyle.edgeStyle&&"1"==b.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==b.currentEdgeStyle.edgeStyle||"none"==b.currentEdgeStyle.edgeStyle||null==
 b.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&
 (this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==b.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==b.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==b.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_STARTARROW],
@@ -2130,28 +2132,29 @@ EditorUi.prototype.initClipboard=function(){var a=this,c=mxClipboard.cut;mxClipb
 !1,null):d=b.apply(this,arguments);a.updatePasteActionStates();return d};var f=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){f.apply(this,arguments);a.updatePasteActionStates()};var e=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,c){e.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20;
 EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),b=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,
 this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,c){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var c=null,d=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(b,c,d,e){if(null!=a.container){d=null!=d?d:0;e=null!=e?e:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),f=mxUtils.hasScrollbars(a.container),h=a.view.translate,k=a.view.scale,l=mxRectangle.fromRectangle(g);
-l.x=l.x/k-h.x;l.y=l.y/k-h.y;l.width/=k;l.height/=k;var h=a.container.scrollTop,m=a.container.scrollLeft,p=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)p+=3;var n=a.container.offsetWidth-p,p=a.container.offsetHeight-p;b=b?Math.max(.3,Math.min(c||1,n/l.width)):k;c=(n-b*l.width)/2/b;var B=0==this.lightboxVerticalDivider?0:(p-b*l.height)/this.lightboxVerticalDivider/b;f&&(c=Math.max(c,0),B=Math.max(B,0));if(f||g.width<n||g.height<p)a.view.scaleAndTranslate(b,
-Math.floor(c-l.x),Math.floor(B-l.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=m*b/k;else if(0!=d||0!=e)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/k),Math.floor(g.y+e/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var b=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",b);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",b)});this.editor.addListener("resetGraphView",
-mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){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.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var f=mxUtils.bind(this,function(){var b=mxUtils.getCurrentStyle(a.container);this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||
-0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",f);f();var e=0,f=mxUtils.bind(this,function(a,b,c){e++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=c&&d.setAttribute("title",c);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);d.appendChild(a);this.chromelessToolbar.appendChild(d);
-return d}),h=f(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),g=document.createElement("div");g.style.display="inline-block";g.style.verticalAlign="top";g.style.fontFamily="Helvetica,Arial";g.style.marginTop="8px";g.style.fontSize="14px";g.style.color="#ffffff";this.chromelessToolbar.appendChild(g);var k=f(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,
-mxResources.get("nextPage")),l=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(g.innerHTML="",mxUtils.write(g,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});h.style.paddingLeft="0px";h.style.paddingRight="4px";k.style.paddingLeft="4px";k.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(k.style.display="",h.style.display="",g.style.display="inline-block"):
-(k.style.display="none",h.style.display="none",g.style.display="none");l()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",l);f(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");f(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");f(mxUtils.bind(this,
-function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var p=null,n=null,u=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),fadeThead=null);null!=n&&(window.clearTimeout(n),fadeThead2=null);p=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);p=null;n=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
-"none";n=null}),600)}),a||200)}),q=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),fadeThead=null);null!=n&&(window.clearTimeout(n),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var r=f(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,
-"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var c=r.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";
-mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=c.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=c.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(b)}),Editor.layersLargeImage,mxResources.get("layers")),t=a.getModel();t.addListener(mxEvent.CHANGE,function(){r.style.display=1<t.getChildCount(t.root)?
-"":"none"})}this.addChromelessToolbarItems(f);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||f(mxUtils.bind(this,function(b){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(b)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var w=
-this.lightboxToolbarActions[m];f(w.fn,w.icon,w.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||f(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?
-"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||q(30),u())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?u():q(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?u():q(100);mxEvent.consume(a)}));
-mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var v=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<v&&Math.abs(this.scrollTop-
-a.container.scrollTop)<v&&Math.abs(this.startX-c.getGraphX())<v&&Math.abs(this.startY-c.getGraphY())<v&&(0<parseFloat(d.chromelessToolbar.style.opacity||0)?u():q(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var z=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=
-a.y-(this.y0||0)*b.height}z.apply(this,arguments)};var x=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),c=this.getPagePadding(),d=this.getPageSize(),e=Math.ceil(2*c.x+b.width*d.width),g=Math.ceil(2*c.y+b.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=e||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,e,g);e=c.x-b.x*d.width;c=c.y-b.y*d.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==
-c?x.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var E=null;a.lazyZoom=function(b){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);b?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=
-(this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*
-this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var b=mxUtils.getOffset(a.container),e=0,g=0;null!=E&&(e=a.container.offsetWidth/2-E.x+b.x,g=a.container.offsetHeight/2-E.y+b.y);b=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=b&&(null!=c&&d.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),g*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==g||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor-
-1),a.container.scrollTop-=g*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(b))for(var d=mxEvent.getSource(b);null!=d;){if(d==a.container){E=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));a.lazyZoom(c);mxEvent.consume(b);break}d=d.parentNode}}))};
+l.x=l.x/k-h.x;l.y=l.y/k-h.y;l.width/=k;l.height/=k;var h=a.container.scrollTop,m=a.container.scrollLeft,p=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)p+=3;var B=a.container.offsetWidth-p,p=a.container.offsetHeight-p;b=b?Math.max(.3,Math.min(c||1,B/l.width)):k;c=(B-b*l.width)/2/b;var I=0==this.lightboxVerticalDivider?0:(p-b*l.height)/this.lightboxVerticalDivider/b;f&&(c=Math.max(c,0),I=Math.max(I,0));if(f||g.width<B||g.height<p)a.view.scaleAndTranslate(b,
+Math.floor(c-l.x),Math.floor(I-l.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=m*b/k;else if(0!=d||0!=e)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/k),Math.floor(g.y+e/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var b=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",b);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",b)});this.editor.addListener("resetGraphView",
+mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var f=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";
+this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var e=mxUtils.bind(this,function(){var b=mxUtils.getCurrentStyle(a.container);
+this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var h=0,e=mxUtils.bind(this,function(a,b,c){h++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=c&&d.setAttribute("title",c);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",
+b);d.appendChild(a);this.chromelessToolbar.appendChild(d);return d});null!=f.backBtn&&e(mxUtils.bind(this,function(a){window.location.href=f.backBtn.url;mxEvent.consume(a)}),Editor.backLargeImage,mxResources.get("goback",null,"Go Back"));var g=e(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),k=document.createElement("div");k.style.display="inline-block";k.style.verticalAlign="top";k.style.fontFamily=
+"Helvetica,Arial";k.style.marginTop="8px";k.style.fontSize="14px";k.style.color="#ffffff";this.chromelessToolbar.appendChild(k);var l=e(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(k.innerHTML="",mxUtils.write(k,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});g.style.paddingLeft="0px";
+g.style.paddingRight="4px";l.style.paddingLeft="4px";l.style.paddingRight="0px";var p=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(l.style.display="",g.style.display="",k.style.display="inline-block"):(l.style.display="none",g.style.display="none",k.style.display="none");m()});this.editor.addListener("resetGraphView",p);this.editor.addListener("pageSelected",m);e(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,
+mxResources.get("zoomOut")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var n=null,u=null,r=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),
+fadeThead=null);null!=u&&(window.clearTimeout(u),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);n=null;u=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";u=null}),600)}),a||200)}),q=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=u&&(window.clearTimeout(u),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||
+30)});if("1"==urlParams.layers){this.layersDialog=null;var t=e(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var c=t.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius",
+"5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=c.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);
+this.layersDialog.style.zIndex=c.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(b)}),Editor.layersLargeImage,mxResources.get("layers")),w=a.getModel();w.addListener(mxEvent.CHANGE,function(){t.style.display=1<w.getChildCount(w.root)?"":"none"})}this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(b){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):
+a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(b)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(p=0;p<this.lightboxToolbarActions.length;p++){var v=this.lightboxToolbarActions[p];e(v.fn,v.icon,v.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||e(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");
+null!=f.refreshBtn&&e(mxUtils.bind(this,function(a){f.refreshBtn.url?window.location.href=f.refreshBtn.url:window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+(mxEvent.isShiftDown(a)||q(30),r())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?r():q(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?r():q(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+q(30)}));var z=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<z&&Math.abs(this.scrollTop-a.container.scrollTop)<z&&Math.abs(this.startX-c.getGraphX())<z&&Math.abs(this.startY-c.getGraphY())<
+z&&(0<parseFloat(d.chromelessToolbar.style.opacity||0)?r():q(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var x=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}x.apply(this,arguments)};var F=a.sizeDidChange;a.sizeDidChange=function(){if(null!=
+this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),c=this.getPagePadding(),d=this.getPageSize(),e=Math.ceil(2*c.x+b.width*d.width),g=Math.ceil(2*c.y+b.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=e||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,e,g);e=c.x-b.x*d.width;c=c.y-b.y*d.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==c?F.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,
+d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var C=null;a.lazyZoom=function(b){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);b?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=
+Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,
+function(){var b=mxUtils.getOffset(a.container),e=0,g=0;null!=C&&(e=a.container.offsetWidth/2-C.x+b.x,g=a.container.offsetHeight/2-C.y+b.y);b=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=b&&(null!=c&&d.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),g*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==g||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor-1),a.container.scrollTop-=g*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=
+1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(b))for(var d=mxEvent.getSource(b);null!=d;){if(d==a.container){C=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));a.lazyZoom(c);mxEvent.consume(b);break}d=d.parentNode}}))};
 EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))};
 EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return 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){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
@@ -2254,9 +2257,9 @@ null,e)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for
 Sidebar.prototype.addSearchPalette=function(a){var c=document.createElement("div");c.style.visibility="hidden";this.container.appendChild(c);var d=document.createElement("div");d.className="geSidebar";d.style.boxSizing="border-box";d.style.overflow="hidden";d.style.width="100%";d.style.padding="8px";d.style.paddingTop="14px";d.style.paddingBottom="0px";a||(d.style.display="none");var b=document.createElement("div");b.style.whiteSpace="nowrap";b.style.textOverflow="clip";b.style.paddingBottom="8px";
 b.style.cursor="default";var f=document.createElement("input");f.setAttribute("placeholder",mxResources.get("searchShapes"));f.setAttribute("type","text");f.style.fontSize="12px";f.style.overflow="hidden";f.style.boxSizing="border-box";f.style.border="solid 1px #d5d5d5";f.style.borderRadius="4px";f.style.width="100%";f.style.outline="none";f.style.padding="6px";b.appendChild(f);var e=document.createElement("img");e.setAttribute("src",Sidebar.prototype.searchImage);e.setAttribute("title",mxResources.get("search"));
 e.style.position="relative";e.style.left="-18px";mxClient.IS_QUIRKS?(f.style.height="28px",e.style.top="-4px"):e.style.top="1px";e.style.background="url('"+this.editorUi.editor.transparentImage+"')";var h;b.appendChild(e);d.appendChild(b);var g=document.createElement("center"),k=mxUtils.button(mxResources.get("moreResults"),function(){h()});k.style.display="none";k.style.lineHeight="normal";k.style.marginTop="4px";k.style.marginBottom="8px";g.style.paddingTop="4px";g.style.paddingBottom="8px";g.appendChild(k);
-d.appendChild(g);var l="",m=!1,p=!1,n=0,u={},q=12,r=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var a=d.firstChild;null!=a;){var c=a.nextSibling;a!=b&&a!=g&&a.parentNode.removeChild(a);a=c}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),k.style.display="none",l=f.value="",r());f.focus()});h=mxUtils.bind(this,function(){q=4*Math.max(1,
-Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(r(),l=f.value,u={},p=!1,n=0),!m&&!p)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(l,q,n,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;n++;this.insertSearchHint(d,l,q,n,b,c,e,f);null!=g.parentNode&&g.parentNode.removeChild(g);
-for(c=0;c<b.length;c++)f=b[c](),null==u[f.innerHTML]&&(u[f.innerHTML]="1",d.appendChild(b[c]()));e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",p=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else r(),l=f.value="",u={},k.style.display="none",p=!1,f.focus()});mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))}));
+d.appendChild(g);var l="",m=!1,p=!1,n=0,u={},r=12,q=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var a=d.firstChild;null!=a;){var c=a.nextSibling;a!=b&&a!=g&&a.parentNode.removeChild(a);a=c}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),k.style.display="none",l=f.value="",q());f.focus()});h=mxUtils.bind(this,function(){r=4*Math.max(1,
+Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(q(),l=f.value,u={},p=!1,n=0),!m&&!p)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(l,r,n,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;n++;this.insertSearchHint(d,l,r,n,b,c,e,f);null!=g.parentNode&&g.parentNode.removeChild(g);
+for(c=0;c<b.length;c++)f=b[c](),null==u[f.innerHTML]&&(u[f.innerHTML]="1",d.appendChild(b[c]()));e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",p=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else q(),l=f.value="",u={},k.style.display="none",p=!1,f.focus()});mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))}));
 mxEvent.addListener(f,"focus",function(){f.style.paddingRight=""});mxEvent.addListener(f,"blur",function(){f.style.paddingRight="20px"});f.style.paddingRight="20px";mxEvent.addListener(f,"keyup",mxUtils.bind(this,function(a){""==f.value?(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search"))):(e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("reset")));""==f.value?(p=!0,k.style.display="none"):f.value!=l?(k.style.display=
 "none",p=!1):m||(k.style.display=p?"none":"")}));mxEvent.addListener(f,"mousedown",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});mxEvent.addListener(f,"selectstart",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});a=document.createElement("div");a.appendChild(d);this.container.appendChild(a);this.palettes.search=[c,a]};
 Sidebar.prototype.insertSearchHint=function(a,c,d,b,f,e,h,g){0==f.length&&1==b&&(d=document.createElement("div"),d.className="geTitle",d.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(d,mxResources.get("noResultsFor",[c])),a.appendChild(d))};
@@ -2371,39 +2374,39 @@ Sidebar.prototype.updateShapes=function(a,c){var d=this.editorUi.editor.graph,b=
 d.getModel().isEdge(k)==d.getModel().isEdge(a)){var l=d.view.getState(k),m=null!=l?l.style:d.getCellStyle(c[g]);d.getModel().setStyle(k,e);if(null!=l&&"1"==mxUtils.getValue(l.style,"composite","0"))for(var p=d.model.getChildCount(k);0<=p;p--)d.model.remove(d.model.getChildAt(k,p));if(null!=m)for("umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=b[mxConstants.STYLE_SHAPE]&&(d.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[k]),d.setCellStyles("participant",b[mxConstants.STYLE_SHAPE],[k])),
 p=0;p<h.length;p++){var n=m[h[p]];null!=n&&d.setCellStyles(h[p],n,[k])}f.push(k)}}}finally{d.model.endUpdate()}return f};
 Sidebar.prototype.createDropHandler=function(a,c,d,b){d=null!=d?d:!0;return mxUtils.bind(this,function(f,e,h,g,k,l){for(l=l?null:mxEvent.isTouchEvent(e)||mxEvent.isPenEvent(e)?document.elementFromPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)):mxEvent.getSource(e);null!=l&&l!=this.container;)l=l.parentNode;if(null==l&&f.isEnabled()){a=f.getImportableCells(a);if(0<a.length){f.stopEditing();l=null==h||mxEvent.isAltDown(e)?!1:f.isValidDropTarget(h,a,e);var m=null;null==h||l||(h=null);if(!f.isCellLocked(h||
-f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var p=f.cloneCells(a);f.splitEdge(h,p,null,g-b.width/2,k-b.height/2);m=p}else 0<a.length&&(m=f.importCells(a,g,k,h));if(null!=f.layoutManager){var n=f.layoutManager.getLayout(h);if(null!=n){var u=f.view.scale,q=f.view.translate,r=(g+q.x)*u,t=(k+q.y)*u;for(h=0;h<m.length;h++)n.moveCell(m[h],r,t)}}!d||null!=e&&mxEvent.isShiftDown(e)||f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!=
+f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var p=f.cloneCells(a);f.splitEdge(h,p,null,g-b.width/2,k-b.height/2);m=p}else 0<a.length&&(m=f.importCells(a,g,k,h));if(null!=f.layoutManager){var n=f.layoutManager.getLayout(h);if(null!=n){var u=f.view.scale,r=f.view.translate,q=(g+r.x)*u,t=(k+r.y)*u;for(h=0;h<m.length;h++)n.moveCell(m[h],q,t)}}!d||null!=e&&mxEvent.isShiftDown(e)||f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!=
 m&&0<m.length&&(f.scrollCellToVisible(m[0]),f.setSelectionCells(m));f.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=m&&1==m.length&&window.setTimeout(function(){f.startEditing(m[0])},0)}}mxEvent.consume(e)}})};Sidebar.prototype.createDragPreview=function(a,c){var d=document.createElement("div");d.style.border=this.dragPreviewBorder;d.style.width=a+"px";d.style.height=c+"px";return d};
-Sidebar.prototype.dropAndConnect=function(a,c,d,b,f){var e=this.getDropAndConnectGeometry(a,c[b],d,c),h=[];if(null!=e){var g=this.editorUi.editor.graph,k=null;g.model.beginUpdate();try{var l=g.getCellGeometry(a),m=g.getCellGeometry(c[b]),p=g.model.getParent(a),n=!0;if(null!=g.layoutManager){var u=g.layoutManager.getLayout(p);if(null!=u&&u.constructor==mxStackLayout&&(n=!1,h=g.view.getState(p),null!=h)){var q=new mxPoint(h.x/g.view.scale-g.view.translate.x,h.y/g.view.scale-g.view.translate.y);e.x+=
-q.x;e.y+=q.y;var r=e.getTerminalPoint(!1);null!=r&&(r.x+=q.x,r.y+=q.y)}}var t=m.x,w=m.y;g.model.isEdge(c[b])&&(w=t=0);var v=g.model.isEdge(a)||null!=l&&!l.relative&&n,h=c=g.importCells(c,e.x-(v?t:0),e.y-(v?w:0),v?p:null);if(g.model.isEdge(a))g.model.setTerminal(a,c[b],d==mxConstants.DIRECTION_NORTH);else if(g.model.isEdge(c[b])){g.model.setTerminal(c[b],a,!0);var z=g.getCellGeometry(c[b]);z.points=null;if(null!=z.getTerminalPoint(!1))z.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(v&&g.model.isVertex(p)){var x=
-g.view.getState(p),q=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,q.x,q.y,null,null,!0)}}else m=g.getCellGeometry(c[b]),t=e.x-Math.round(m.x),w=e.y-Math.round(m.y),e.x=Math.round(m.x),e.y=Math.round(m.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,t,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)||
-g.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(E){this.editorUi.handleError(E)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h};
+Sidebar.prototype.dropAndConnect=function(a,c,d,b,f){var e=this.getDropAndConnectGeometry(a,c[b],d,c),h=[];if(null!=e){var g=this.editorUi.editor.graph,k=null;g.model.beginUpdate();try{var l=g.getCellGeometry(a),m=g.getCellGeometry(c[b]),p=g.model.getParent(a),n=!0;if(null!=g.layoutManager){var u=g.layoutManager.getLayout(p);if(null!=u&&u.constructor==mxStackLayout&&(n=!1,h=g.view.getState(p),null!=h)){var r=new mxPoint(h.x/g.view.scale-g.view.translate.x,h.y/g.view.scale-g.view.translate.y);e.x+=
+r.x;e.y+=r.y;var q=e.getTerminalPoint(!1);null!=q&&(q.x+=r.x,q.y+=r.y)}}var t=m.x,w=m.y;g.model.isEdge(c[b])&&(w=t=0);var v=g.model.isEdge(a)||null!=l&&!l.relative&&n,h=c=g.importCells(c,e.x-(v?t:0),e.y-(v?w:0),v?p:null);if(g.model.isEdge(a))g.model.setTerminal(a,c[b],d==mxConstants.DIRECTION_NORTH);else if(g.model.isEdge(c[b])){g.model.setTerminal(c[b],a,!0);var z=g.getCellGeometry(c[b]);z.points=null;if(null!=z.getTerminalPoint(!1))z.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(v&&g.model.isVertex(p)){var x=
+g.view.getState(p),r=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,r.x,r.y,null,null,!0)}}else m=g.getCellGeometry(c[b]),t=e.x-Math.round(m.x),w=e.y-Math.round(m.y),e.x=Math.round(m.x),e.y=Math.round(m.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,t,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)||
+g.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(F){this.editorUi.handleError(F)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h};
 Sidebar.prototype.getDropAndConnectGeometry=function(a,c,d,b){var f=this.editorUi.editor.graph,e=f.view,h=1<b.length,g=f.getCellGeometry(a);b=f.getCellGeometry(c);null!=g&&null!=b&&(b=b.clone(),f.model.isEdge(a)?(a=f.view.getState(a),g=a.absolutePoints,c=g[0],f=g[g.length-1],d==mxConstants.DIRECTION_NORTH?(b.x=c.x/e.scale-e.translate.x-b.width/2,b.y=c.y/e.scale-e.translate.y-b.height/2):(b.x=f.x/e.scale-e.translate.x-b.width/2,b.y=f.y/e.scale-e.translate.y-b.height/2)):(g.relative&&(a=f.view.getState(a),
 g=g.clone(),g.x=(a.x-e.translate.x)/e.scale,g.y=(a.y-e.translate.y)/e.scale),e=f.defaultEdgeLength,f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=b.getTerminalPoint(!1)?(c=b.getTerminalPoint(!0),f=b.getTerminalPoint(!1),e=f.x-c.x,c=f.y-c.y,e=Math.sqrt(e*e+c*c),b.x=g.getCenterX(),b.y=g.getCenterY(),b.width=1,b.height=1,d==mxConstants.DIRECTION_NORTH?(b.height=e,b.y=g.y-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1)):d==mxConstants.DIRECTION_EAST?(b.width=e,b.x=g.x+g.width,b.setTerminalPoint(new mxPoint(b.x+
 b.width,b.y),!1)):d==mxConstants.DIRECTION_SOUTH?(b.height=e,b.y=g.y+g.height,b.setTerminalPoint(new mxPoint(b.x,b.y+b.height),!1)):d==mxConstants.DIRECTION_WEST&&(b.width=e,b.x=g.x-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1))):(!h&&45<b.width&&45<b.height&&45<g.width&&45<g.height&&(b.width*=g.height/b.height,b.height=g.height),b.x=g.x+g.width/2-b.width/2,b.y=g.y+g.height/2-b.height/2,d==mxConstants.DIRECTION_NORTH?b.y=b.y-g.height/2-b.height/2-e:d==mxConstants.DIRECTION_EAST?b.x=b.x+g.width/2+
 b.width/2+e:d==mxConstants.DIRECTION_SOUTH?b.y=b.y+g.height/2+b.height/2+e:d==mxConstants.DIRECTION_WEST&&(b.x=b.x-g.width/2-b.width/2-e),f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=c.getTerminal(!1)&&(g=f.getCellGeometry(c.getTerminal(!1)),null!=g&&(d==mxConstants.DIRECTION_NORTH?(b.x-=g.getCenterX(),b.y-=g.getCenterY()+g.height/2):d==mxConstants.DIRECTION_EAST?(b.x-=g.getCenterX()-g.width/2,b.y-=g.getCenterY()):d==mxConstants.DIRECTION_SOUTH?(b.x-=g.getCenterX(),b.y-=g.getCenterY()-g.height/
 2):d==mxConstants.DIRECTION_WEST&&(b.x-=g.getCenterX()+g.width/2,b.y-=g.getCenterY()))))));return b};
 Sidebar.prototype.createDragSource=function(a,c,d,b,f){function e(a,b){var c;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(c=document.createElement(mxClient.VML_PREFIX+":image"),c.setAttribute("src",a.src),c.style.borderStyle="none"):(c=document.createElement("div"),c.style.backgroundImage="url("+a.src+")",c.style.backgroundPosition="center",c.style.backgroundRepeat="no-repeat"),c.style.width=a.width+4+"px",c.style.height=a.height+4+"px",c.style.display=mxClient.IS_QUIRKS?
-"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),G=d):mxUtils.setOpacity(d,d==F?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,m=null,p=this,n=0;n<b.length&&(null==m&&this.editorUi.editor.graph.model.isVertex(b[n])?
-m=n:null==l&&this.editorUi.editor.graph.model.isEdge(b[n])&&null==this.editorUi.editor.graph.model.getTerminal(b[n],!0)&&(l=n),null==m||null==l);n++);var u=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=w&&G==F){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?b[0]:b[m],h);a.setSelectionCells(h)}else null!=b&&null!=G&&null!=
-r&&G!=F?(h=a.model.isEdge(r.cell)||null==l?m:l,a.setSelectionCells(this.dropAndConnect(r.cell,b,J,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var q=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),q.apply(this,arguments))};var r=null,t=null,w=null,v=!1,
-z=e(this.triangleUp,mxResources.get("connect")),x=e(this.triangleRight,mxResources.get("connect")),E=e(this.triangleDown,mxResources.get("connect")),D=e(this.triangleLeft,mxResources.get("connect")),F=e(this.refreshTarget,mxResources.get("replace")),C=null,M=e(this.roundDrop),L=e(this.roundDrop),J=mxConstants.DIRECTION_NORTH,G=null,K=u.createPreviewElement;u.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=b.style.width;
-this.previewElementHeight=b.style.height;return b};var O=u.dragEnter;u.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");O.apply(this,arguments)};var Q=u.dragExit;u.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");Q.apply(this,arguments)};u.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=G&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=w&&G==F)this.previewElement.style.display=
-a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=r&&null!=G){var e=a.model.isEdge(r.cell)||null==l?m:l,g=p.getDropAndConnectGeometry(r.cell,b[e],J,b),h=a.model.isEdge(r.cell)?null:a.getCellGeometry(r.cell),k=a.getCellGeometry(b[e]),B=a.model.getParent(r.cell),A=d.translate.x*d.scale,I=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(B)&&
+"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),G=d):mxUtils.setOpacity(d,d==E?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,m=null,p=this,n=0;n<b.length&&(null==m&&this.editorUi.editor.graph.model.isVertex(b[n])?
+m=n:null==l&&this.editorUi.editor.graph.model.isEdge(b[n])&&null==this.editorUi.editor.graph.model.getTerminal(b[n],!0)&&(l=n),null==m||null==l);n++);var u=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=w&&G==E){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?b[0]:b[m],h);a.setSelectionCells(h)}else null!=b&&null!=G&&null!=
+q&&G!=E?(h=a.model.isEdge(q.cell)||null==l?m:l,a.setSelectionCells(this.dropAndConnect(q.cell,b,J,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var r=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),r.apply(this,arguments))};var q=null,t=null,w=null,v=!1,
+z=e(this.triangleUp,mxResources.get("connect")),x=e(this.triangleRight,mxResources.get("connect")),F=e(this.triangleDown,mxResources.get("connect")),C=e(this.triangleLeft,mxResources.get("connect")),E=e(this.refreshTarget,mxResources.get("replace")),D=null,M=e(this.roundDrop),L=e(this.roundDrop),J=mxConstants.DIRECTION_NORTH,G=null,K=u.createPreviewElement;u.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=b.style.width;
+this.previewElementHeight=b.style.height;return b};var O=u.dragEnter;u.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");O.apply(this,arguments)};var Q=u.dragExit;u.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");Q.apply(this,arguments)};u.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=G&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=w&&G==E)this.previewElement.style.display=
+a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=q&&null!=G){var e=a.model.isEdge(q.cell)||null==l?m:l,g=p.getDropAndConnectGeometry(q.cell,b[e],J,b),h=a.model.isEdge(q.cell)?null:a.getCellGeometry(q.cell),k=a.getCellGeometry(b[e]),B=a.model.getParent(q.cell),A=d.translate.x*d.scale,I=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(B)&&
 B!=d.currentRoot&&(I=d.getState(B),A=I.x,I=I.y);h=k.x;k=k.y;a.model.isEdge(b[e])&&(k=h=0);this.previewElement.style.left=(g.x-h)*d.scale+A+"px";this.previewElement.style.top=(g.y-k)*d.scale+I+"px";1==b.length&&(this.previewElement.style.width=g.width*d.scale+"px",this.previewElement.style.height=g.height*d.scale+"px");this.previewElement.style.display=""}else null!=u.currentHighlight.state&&a.model.isEdge(u.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-
 f.width*d.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*d.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var P=(new Date).getTime(),H=0,B=null,I=this.editorUi.editor.graph.getCellStyle(b[0]);u.getDropTarget=mxUtils.bind(this,function(a,c,d,e){var g=mxEvent.isAltDown(e)||null==b?null:a.getCellAt(c,d);if(null!=g&&!this.graph.isCellConnectable(g)){var f=
 this.graph.getModel().getParent(g);this.graph.getModel().isVertex(f)&&this.graph.isCellConnectable(f)&&(g=f)}a.isCellLocked(g)&&(g=null);var k=a.view.getState(g),f=G=null;B!=k?(B=k,P=(new Date).getTime(),H=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=k&&(this.updateThread=window.setTimeout(function(){null==G&&(B=k,u.getDropTarget(a,c,d,e))},this.dropTargetDelay+10))):H=(new Date).getTime()-P;if(2500>H&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!=
 mxUtils.getValue(I,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(I,mxConstants.STYLE_SHAPE)||1500<H||a.model.isEdge(k.cell))&&H>this.dropTargetDelay&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(b[0]))){w=
-k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);F.style.left=Math.floor(l.x)+"px";F.style.top=Math.floor(l.y)+"px";null==C&&(a.container.appendChild(F),C=F.parentNode);h(c,d,l,F)}else null==w||!mxUtils.contains(w,c,d)||1500<H&&!mxEvent.isShiftDown(e)?(w=null,null!=C&&(F.parentNode.removeChild(F),C=null)):null!=w&&null!=C&&
-(l=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,F));if(v&&null!=r&&!mxEvent.isAltDown(e)&&null==G){f=mxRectangle.fromRectangle(r);if(a.model.isEdge(r.cell)){var A=r.absolutePoints;null!=M.parentNode&&(l=A[0],f.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),
-M)));null!=L.parentNode&&(A=A[A.length-1],f.add(h(c,d,new mxRectangle(A.x-this.roundDrop.width/2,A.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else l=mxRectangle.fromRectangle(r),null!=r.shape&&null!=r.shape.boundingBox&&(l=mxRectangle.fromRectangle(r.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(r.cell),null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset,
-l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleUp.width/2,l.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),z)),f.add(h(c,d,new mxRectangle(l.x+l.width,r.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),
-x)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),E)),f.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,r.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),D));null!=f&&f.grow(10)}J=mxConstants.DIRECTION_NORTH;G==x?J=mxConstants.DIRECTION_EAST:G==E||G==L?J=mxConstants.DIRECTION_SOUTH:G==D&&(J=mxConstants.DIRECTION_WEST);null!=w&&G==F&&(k=w);l=(null==m||a.isCellConnectable(b[m]))&&
-(a.model.isEdge(g)&&null!=m||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=r&&5E3<=H||r!=k&&(null==f||!mxUtils.contains(f,c,d)||500<H&&null==G&&l))if(v=!1,r=5E3>H&&H>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=r&&l){f=[M,L,z,x,E,D];for(l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);a.model.isEdge(g)?(A=k.absolutePoints,null!=A&&(l=A[0],A=A[A.length-1],f=a.tolerance,new mxRectangle(c-f,d-f,2*f,2*f),M.style.left=Math.floor(l.x-this.roundDrop.width/2)+"px",
+k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);E.style.left=Math.floor(l.x)+"px";E.style.top=Math.floor(l.y)+"px";null==D&&(a.container.appendChild(E),D=E.parentNode);h(c,d,l,E)}else null==w||!mxUtils.contains(w,c,d)||1500<H&&!mxEvent.isShiftDown(e)?(w=null,null!=D&&(E.parentNode.removeChild(E),D=null)):null!=w&&null!=D&&
+(l=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,E));if(v&&null!=q&&!mxEvent.isAltDown(e)&&null==G){f=mxRectangle.fromRectangle(q);if(a.model.isEdge(q.cell)){var A=q.absolutePoints;null!=M.parentNode&&(l=A[0],f.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),
+M)));null!=L.parentNode&&(A=A[A.length-1],f.add(h(c,d,new mxRectangle(A.x-this.roundDrop.width/2,A.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else l=mxRectangle.fromRectangle(q),null!=q.shape&&null!=q.shape.boundingBox&&(l=mxRectangle.fromRectangle(q.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(q.cell),null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset,
+l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),f.add(h(c,d,new mxRectangle(q.getCenterX()-this.triangleUp.width/2,l.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),z)),f.add(h(c,d,new mxRectangle(l.x+l.width,q.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),
+x)),f.add(h(c,d,new mxRectangle(q.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),F)),f.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,q.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),C));null!=f&&f.grow(10)}J=mxConstants.DIRECTION_NORTH;G==x?J=mxConstants.DIRECTION_EAST:G==F||G==L?J=mxConstants.DIRECTION_SOUTH:G==C&&(J=mxConstants.DIRECTION_WEST);null!=w&&G==E&&(k=w);l=(null==m||a.isCellConnectable(b[m]))&&
+(a.model.isEdge(g)&&null!=m||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=q&&5E3<=H||q!=k&&(null==f||!mxUtils.contains(f,c,d)||500<H&&null==G&&l))if(v=!1,q=5E3>H&&H>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=q&&l){f=[M,L,z,x,F,C];for(l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);a.model.isEdge(g)?(A=k.absolutePoints,null!=A&&(l=A[0],A=A[A.length-1],f=a.tolerance,new mxRectangle(c-f,d-f,2*f,2*f),M.style.left=Math.floor(l.x-this.roundDrop.width/2)+"px",
 M.style.top=Math.floor(l.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(A.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(A.y-this.roundDrop.height/2)+"px",null==a.model.getTerminal(g,!0)&&a.container.appendChild(M),null==a.model.getTerminal(g,!1)&&a.container.appendChild(L))):(l=mxRectangle.fromRectangle(k),null!=k.shape&&null!=k.shape.boundingBox&&(l=mxRectangle.fromRectangle(k.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(k.cell),
 null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset,l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),z.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",z.style.top=Math.floor(l.y-this.triangleUp.height)+"px",x.style.left=Math.floor(l.x+l.width)+"px",x.style.top=
-Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",E.style.left=z.style.left,E.style.top=Math.floor(l.y+l.height)+"px",D.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",D.style.top=x.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(z),a.container.appendChild(E)),a.container.appendChild(x),a.container.appendChild(D));null!=k&&(t=a.selectionCellsHandler.getHandler(k.cell),null!=t&&null!=t.setHandlesVisible&&t.setHandlesVisible(!1));v=!0}else for(f=[M,L,z,x,E,D],
-l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);v||null==t||t.setHandlesVisible(!0);g=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=w&&G==F?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=G||!a.isSplitTarget(g,b,e))){for(;null!=g&&!a.isValidDropTarget(g,b,e)&&f.isVertex(f.getParent(g));)g=f.getParent(g);if(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g))g=
-null}return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[M,L,F,z,x,E,D],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=r&&null!=t&&t.reset();G=C=w=r=t=null};return u};
+Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",F.style.left=z.style.left,F.style.top=Math.floor(l.y+l.height)+"px",C.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",C.style.top=x.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(z),a.container.appendChild(F)),a.container.appendChild(x),a.container.appendChild(C));null!=k&&(t=a.selectionCellsHandler.getHandler(k.cell),null!=t&&null!=t.setHandlesVisible&&t.setHandlesVisible(!1));v=!0}else for(f=[M,L,z,x,F,C],
+l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);v||null==t||t.setHandlesVisible(!0);g=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=w&&G==E?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=G||!a.isSplitTarget(g,b,e))){for(;null!=g&&!a.isValidDropTarget(g,b,e)&&f.isVertex(f.getParent(g));)g=f.getParent(g);if(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g))g=
+null}return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[M,L,E,z,x,F,C],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=q&&null!=t&&t.reset();G=D=w=q=t=null};return u};
 Sidebar.prototype.itemClicked=function(a,c,d,b){b=this.editorUi.editor.graph;b.container.focus();if(mxEvent.isAltDown(d)&&1==b.getSelectionCount()&&b.model.isVertex(b.getSelectionCell())){c=null;for(var f=0;f<a.length&&null==c;f++)b.model.isVertex(a[f])&&(c=f);null!=c&&(b.setSelectionCells(this.dropAndConnect(b.getSelectionCell(),a,mxEvent.isMetaDown(d)||mxEvent.isControlDown(d)?mxEvent.isShiftDown(d)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(d)?mxConstants.DIRECTION_EAST:
 mxConstants.DIRECTION_SOUTH,c,d)),b.scrollCellToVisible(b.getSelectionCell()))}else if(mxEvent.isShiftDown(d)&&!b.isSelectionEmpty())this.updateShapes(a[0],b.getSelectionCells()),b.scrollCellToVisible(b.getSelectionCell());else{a=b.getFreeInsertPoint();if(mxEvent.isAltDown(d)){var f=b.getGraphBounds(),e=b.view.translate,h=b.view.scale;a.x=f.x/h-e.x+f.width/h+b.gridSize;a.y=f.y/h-e.y}c.drop(b,d,null,a.x,a.y,!0);null!=this.editorUi.hoverIcons&&(mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d))&&this.editorUi.hoverIcons.update(b.view.getState(b.getSelectionCell()))}};
 Sidebar.prototype.addClickHandler=function(a,c,d){var b=c.mouseDown,f=c.mouseMove,e=c.mouseUp,h=this.editorUi.editor.graph.tolerance,g=null,k=this;c.mouseDown=function(c){b.apply(this,arguments);g=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};c.mouseMove=function(b){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=g&&(Math.abs(g.x-mxEvent.getClientX(b))>h||Math.abs(g.y-mxEvent.getClientY(b))>
@@ -2434,18 +2437,18 @@ m=f.bends.length-1:null!=p&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1
 b.getGraphY()),m.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=c.text&&null!=c.text.boundingBox&&mxUtils.contains(c.text.boundingBox,b.getGraphX(),b.getGraphY()))f="move";else if(mxUtils.contains(m,d[0].x,d[0].y)||mxUtils.contains(m,d[d.length-1].x,d[d.length-1].y))f="pointer";else if(null!=c.visibleSourceState||null!=c.visibleTargetState)p=this.view.getEdgeStyle(c),f="crosshair",p!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(c)&&(p=mxUtils.findNearestSegment(c,b.getGraphX(),b.getGraphY()),
 p<d.length-1&&0<=p&&(f=0==Math.round(d[p].x-d[p+1].x)?"col-resize":"row-resize"));null!=f&&c.setCursor(f)}}),mouseUp:mxUtils.bind(this,function(a,b){k=e=h=g=null})})}this.cellRenderer.getLabelValue=function(a){var b=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(b=1!=a.style.html?mxUtils.htmlEntities(b,!1):a.view.graph.sanitizeHtml(b));return b};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(a,b){return!1};this.alternateEdgeStyle="vertical";null==b&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=
-function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,d=this.graph.pageScale,e=c.width*d,c=c.height*d,d=this.graph.view.translate,g=this.graph.view.scale,f=this.graph.getPageLayout(),h=0;h<f.width;h++)b.push(new mxRectangle(((f.x+h)*e+d.x)*g,(f.y*c+d.y)*g,e*g,c*g));for(h=0;h<f.height;h++)b.push(new mxRectangle((f.x*e+d.x)*g,((f.y+h)*c+d.y)*g,e*g,c*g));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
+function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,d=this.graph.pageScale,e=c.width*d,c=c.height*d,d=this.graph.view.translate,g=this.graph.view.scale,f=this.graph.getPageLayout(),k=0;k<f.width;k++)b.push(new mxRectangle(((f.x+k)*e+d.x)*g,(f.y*c+d.y)*g,e*g,c*g));for(k=0;k<f.height;k++)b.push(new mxRectangle((f.x*e+d.x)*g,((f.y+k)*c+d.y)*g,e*g,c*g));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
 function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var b=mxGraphHandler.prototype.getCells.apply(this,arguments),c=[],d=0;d<b.length;d++){var e=this.graph.view.getState(b[d]),e=null!=e?e.style:this.graph.getCellStyle(b[d]);
 "1"==mxUtils.getValue(e,"part","0")?(e=this.graph.model.getParent(b[d]),this.graph.model.isVertex(e)&&0>mxUtils.indexOf(b,e)&&c.push(e)):c.push(b[d])}return c};this.connectionHandler.createTargetVertex=function(a,b){var c=this.graph.view.getState(b),c=null!=c?c.style:this.graph.getCellStyle(b);mxUtils.getValue(c,"part",!1)&&(c=this.graph.model.getParent(b),this.graph.model.isVertex(c)&&(b=c));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var p=new mxRubberband(this);
-this.getRubberband=function(){return p};var n=(new Date).getTime(),u=0,q=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;q.apply(this,arguments);a!=this.currentState?(n=(new Date).getTime(),u=0):u=(new Date).getTime()-n};var r=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<u||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
-"outlineConnect","1"))&&r.apply(this,arguments)};var t=this.isToggleEvent;this.isToggleEvent=function(a){return t.apply(this,arguments)||mxEvent.isShiftDown(a)};var w=p.isForceRubberbandEvent;p.isForceRubberbandEvent=function(a){return w.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var v=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&
+this.getRubberband=function(){return p};var n=(new Date).getTime(),u=0,r=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;r.apply(this,arguments);a!=this.currentState?(n=(new Date).getTime(),u=0):u=(new Date).getTime()-n};var q=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<u||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
+"outlineConnect","1"))&&q.apply(this,arguments)};var t=this.isToggleEvent;this.isToggleEvent=function(a){return t.apply(this,arguments)||mxEvent.isShiftDown(a)};var w=p.isForceRubberbandEvent;p.isForceRubberbandEvent=function(a){return w.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var v=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&
 (v=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=v)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var z=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return z.apply(this,
 arguments);b=b?a.sourceState.cell:a.getCell();null!=b&&(b=this.getLinkForCell(b),null!=b&&(this.isCustomLink(b)?this.customLinkClicked(b):this.openLink(b)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var x=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=
-this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return x.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,b,c,d,e,g){g=null!=g?g:[];if(0<c||0<d){var f=this.getModel(),h=a+c,k=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=f.getRoot()));if(null!=e)for(var l=f.getChildCount(e),B=0;B<l;B++){var m=f.getChildAt(e,B),A=this.view.getState(m);if(null!=
-A&&this.isCellVisible(m)&&"1"!=mxUtils.getValue(A.style,"locked","0")){var p=mxUtils.getValue(A.style,mxConstants.STYLE_ROTATION)||0;0!=p&&(A=mxUtils.getBoundingBox(A,p));(f.isEdge(m)||f.isVertex(m))&&A.x>=a&&A.y+A.height<=k&&A.y>=b&&A.x+A.width<=h&&g.push(m);this.getAllCells(a,b,c,d,m,g)}}}return g};var E=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:E.apply(this,arguments)};this.isCellLocked=function(a){for(a=
-this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var D=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")){var c=b.getProperty("event").getState();D=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c=
-b.getProperty("event"),d=b.getProperty("cell");null==d?(c=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c)),p.start(c.x,c.y)):null!=D?this.addSelectionCells(D):1<this.getSelectionCount()&&this.isCellSelected(d)&&this.removeSelectionCell(d);D=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){return b&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,
-mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var F=this.updateMouseEvent;this.updateMouseEvent=function(a){a=F.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};
+this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return x.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,b,c,d,e,g){g=null!=g?g:[];if(0<c||0<d){var f=this.getModel(),k=a+c,h=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=f.getRoot()));if(null!=e)for(var l=f.getChildCount(e),B=0;B<l;B++){var m=f.getChildAt(e,B),A=this.view.getState(m);if(null!=
+A&&this.isCellVisible(m)&&"1"!=mxUtils.getValue(A.style,"locked","0")){var p=mxUtils.getValue(A.style,mxConstants.STYLE_ROTATION)||0;0!=p&&(A=mxUtils.getBoundingBox(A,p));(f.isEdge(m)||f.isVertex(m))&&A.x>=a&&A.y+A.height<=h&&A.y>=b&&A.x+A.width<=k&&g.push(m);this.getAllCells(a,b,c,d,m,g)}}}return g};var F=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:F.apply(this,arguments)};this.isCellLocked=function(a){for(a=
+this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var C=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")){var c=b.getProperty("event").getState();C=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c=
+b.getProperty("event"),d=b.getProperty("cell");null==d?(c=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c)),p.start(c.x,c.y)):null!=C?this.addSelectionCells(C):1<this.getSelectionCount()&&this.isCellSelected(d)&&this.removeSelectionCell(d);C=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){return b&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,
+mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var E=this.updateMouseEvent;this.updateMouseEvent=function(a){a=E.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};
 Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;
 Graph.createSvgImage=function(a,c,d){d=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" version="1.1">'+d+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0)),a,c)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;
 Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);
@@ -2475,8 +2478,8 @@ Graph.prototype.isLabelMovable=function(a){var c=this.view.getState(a),c=null!=c
 Graph.prototype.getGlobalVariable=function(a){var c=null;"date"==a?c=(new Date).toLocaleDateString():"time"==a?c=(new Date).toLocaleTimeString():"timestamp"==a?c=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),c=this.formatDate(new Date,a));return c};
 Graph.prototype.formatDate=function(a,c,d){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 b=this.dateFormatCache,f=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,e=/[^-+\dA-Z]/g,h=function(a,b){a=String(a);for(b=b||2;a.length<b;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(b.masks[c]||c||b.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),d=!0);var g=d?"getUTC":"get",k=a[g+"Date"](),l=a[g+"Day"](),m=a[g+"Month"](),p=a[g+"FullYear"](),n=a[g+"Hours"](),u=a[g+"Minutes"](),q=a[g+"Seconds"](),g=a[g+"Milliseconds"](),r=d?0:a.getTimezoneOffset(),t={d:k,dd:h(k),ddd:b.i18n.dayNames[l],dddd:b.i18n.dayNames[l+7],m:m+1,mm:h(m+1),mmm:b.i18n.monthNames[m],mmmm:b.i18n.monthNames[m+
-12],yy:String(p).slice(2),yyyy:p,h:n%12||12,hh:h(n%12||12),H:n,HH:h(n),M:u,MM:h(u),s:q,ss:h(q),l:h(g,3),L:h(99<g?Math.round(g/10):g),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:d?"UTC":(String(a).match(f)||[""]).pop().replace(e,""),o:(0<r?"-":"+")+h(100*Math.floor(Math.abs(r)/60)+Math.abs(r)%60,4),S:["th","st","nd","rd"][3<k%10?0:(10!=k%100-k%10)*k%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in t?t[a]:a.slice(1,
+/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(b.masks[c]||c||b.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),d=!0);var g=d?"getUTC":"get",k=a[g+"Date"](),l=a[g+"Day"](),m=a[g+"Month"](),p=a[g+"FullYear"](),n=a[g+"Hours"](),u=a[g+"Minutes"](),r=a[g+"Seconds"](),g=a[g+"Milliseconds"](),q=d?0:a.getTimezoneOffset(),t={d:k,dd:h(k),ddd:b.i18n.dayNames[l],dddd:b.i18n.dayNames[l+7],m:m+1,mm:h(m+1),mmm:b.i18n.monthNames[m],mmmm:b.i18n.monthNames[m+
+12],yy:String(p).slice(2),yyyy:p,h:n%12||12,hh:h(n%12||12),H:n,HH:h(n),M:u,MM:h(u),s:r,ss:h(r),l:h(g,3),L:h(99<g?Math.round(g/10):g),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:d?"UTC":(String(a).match(f)||[""]).pop().replace(e,""),o:(0<q?"-":"+")+h(100*Math.floor(Math.abs(q)/60)+Math.abs(q)%60,4),S:["th","st","nd","rd"][3<k%10?0:(10!=k%100-k%10)*k%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in t?t[a]:a.slice(1,
 a.length-1)})};
 Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var c=this.getModel(),d=c.getChildCount(c.root),b=0;b<d;b++)mxUtils.bind(this,function(b){var d=document.createElement("div");d.style.overflow="hidden";d.style.textOverflow="ellipsis";d.style.padding="2px";d.style.whiteSpace="nowrap";var f=document.createElement("input");f.style.display="inline-block";f.setAttribute("type","checkbox");c.isVisible(b)&&(f.setAttribute("checked","checked"),
 f.defaultChecked=!0);d.appendChild(f);var g=this.convertValueToString(b)||mxResources.get("background")||"Background";d.setAttribute("title",g);mxUtils.write(d,g);a.appendChild(d);mxEvent.addListener(f,"click",function(){null!=f.getAttribute("checked")?f.removeAttribute("checked"):f.setAttribute("checked","checked");c.setVisible(b,f.checked)})})(c.getChildAt(c.root,b));return a};
@@ -2486,9 +2489,9 @@ Graph.prototype.selectCellsForConnectVertex=function(a,c,d){2==a.length&&this.mo
 Graph.prototype.connectVertex=function(a,c,d,b,f,e){e=e?e:!1;var h=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(a.geometry.x,a.geometry.y);c==mxConstants.DIRECTION_NORTH?(h.x+=a.geometry.width/2,h.y-=d):c==mxConstants.DIRECTION_SOUTH?(h.x+=a.geometry.width/2,h.y+=a.geometry.height+d):(h.x=c==mxConstants.DIRECTION_WEST?h.x-d:h.x+(a.geometry.width+d),h.y+=a.geometry.height/2);d=this.view.getState(this.model.getParent(a));
 var g=this.view.scale,k=this.view.translate,l=k.x*g,k=k.y*g;null!=d&&this.model.isVertex(d.cell)&&(l=d.x,k=d.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(h.x+=a.parent.geometry.x,h.y+=a.parent.geometry.y);e=e||mxEvent.isControlDown(b)&&!f?null:this.getCellAt(l+h.x*g,k+h.y*g);this.model.isAncestor(e,a)&&(e=null);for(d=e;null!=d;){if(this.isCellLocked(d)){e=null;break}d=this.model.getParent(d)}null!=e&&(d=this.view.getState(a),g=this.view.getState(e),null!=d&&null!=g&&mxUtils.intersects(d,
 g)&&(e=null));if(f=!mxEvent.isShiftDown(b)||f)c==mxConstants.DIRECTION_NORTH?h.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?h.y+=a.geometry.height/2:h.x=c==mxConstants.DIRECTION_WEST?h.x-a.geometry.width/2:h.x+a.geometry.width/2;null==e||this.isCellConnectable(e)||(d=this.getModel().getParent(e),this.getModel().isVertex(d)&&this.isCellConnectable(d)&&(e=d));if(e==a||this.model.isEdge(e)||!this.isCellConnectable(e))e=null;d=[];this.model.beginUpdate();try{g=e;if(null==g&&f){for(var l=a,m=
-this.getCellGeometry(a);null!=m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var p=this.view.getState(l),n=null!=p?p.style:this.getCellStyle(l);if(mxUtils.getValue(n,"part",!1)){var u=this.model.getParent(l);this.model.isVertex(u)&&(l=u)}g=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(g);null!=m&&(m.x=h.x-m.width/2,m.y=h.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(b)&&f||null==
-e&&null!=m&&m.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,g,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var r=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=q.parent;)b=this.model.getParent(b);null!=b&&null!=b.parent&&b.parent==q.parent&&(r=b.parent.getIndex(b),this.model.add(b.parent,q,r))}null==e&&null!=g&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&
-(r=a.parent.getIndex(a),this.model.add(a.parent,g,r));null!=q&&d.push(q);null==e&&null!=g&&d.push(g);null==g&&null!=q&&q.geometry.setTerminalPoint(h,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return d};
+this.getCellGeometry(a);null!=m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var p=this.view.getState(l),n=null!=p?p.style:this.getCellStyle(l);if(mxUtils.getValue(n,"part",!1)){var u=this.model.getParent(l);this.model.isVertex(u)&&(l=u)}g=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(g);null!=m&&(m.x=h.x-m.width/2,m.y=h.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var r=mxEvent.isControlDown(b)&&f||null==
+e&&null!=m&&m.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,g,this.createCurrentEdgeStyle());if(null!=r&&this.connectionHandler.insertBeforeSource){var q=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=r.parent;)b=this.model.getParent(b);null!=b&&null!=b.parent&&b.parent==r.parent&&(q=b.parent.getIndex(b),this.model.add(b.parent,r,q))}null==e&&null!=g&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&
+(q=a.parent.getIndex(a),this.model.add(a.parent,g,q));null!=r&&d.push(r);null==e&&null!=g&&d.push(g);null==g&&null!=r&&r.geometry.setTerminalPoint(h,!1);null!=r&&this.fireEvent(new mxEventObject("cellsInserted","cells",[r]))}finally{this.model.endUpdate()}return d};
 Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],d,b;for(b in this.model.cells)if(d=this.model.cells[b],this.model.isVertex(d)||this.model.isEdge(d))this.isHtmlLabel(d)?(a.innerHTML=this.getLabel(d),d=mxUtils.extractTextWithWhitespace([a])):d=this.getLabel(d),d=mxUtils.trim(d.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<d.length&&c.push(d);return c.join(" ")};
 Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var c=a.getAttribute("placeholder"),d=a,b=null;null==b&&null!=d;)null!=d.value&&"object"==typeof d.value&&(b=d.hasAttribute(c)?null!=d.getAttribute(c)?d.getAttribute(c):"":null),d=this.model.getParent(d);return b||""}return a.value.getAttribute("label")||""}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};
@@ -2541,12 +2544,12 @@ this.setDisplay("");null!=this.currentState&&this.currentState!=a&&b<this.activa
 this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};
 (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,b){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=c.apply(this,arguments);null!=
 d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return d.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var b=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){b.apply(this,arguments);this.graph.model.isEdge(a.cell)&&
-1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var g=new mxPoint(c,e);g.type=b;d.push(g);g=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==g||g.type!=b||g.x!=c||g.y!=e},g=.5*this.scale,c=!1,d=[],f=0;f<b.length-1;f++){for(var h=
-b[f+1],k=b[f],w=[],v=b[f+2];f<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,v.x,v.y,h.x,h.y)<1*this.scale*this.scale;)h=v,f++,v=b[f+2];for(var c=e(0,k.x,k.y)||c,z=0;z<this.validEdges.length;z++){var x=this.validEdges[z],E=x.absolutePoints;if(null!=E&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<E.length-1;x++){for(var D=E[x+1],F=E[x],v=E[x+2];x<E.length-2&&mxUtils.ptSegDistSq(F.x,F.y,v.x,v.y,D.x,D.y)<1*this.scale*this.scale;)D=v,x++,v=E[x+2];v=mxUtils.intersection(k.x,k.y,h.x,h.y,F.x,F.y,D.x,
-D.y);if(null!=v&&(Math.abs(v.x-F.x)>g||Math.abs(v.y-F.y)>g)&&(Math.abs(v.x-D.x)>g||Math.abs(v.y-D.y)>g)){D=v.x-k.x;F=v.y-k.y;v={distSq:D*D+F*F,x:v.x,y:v.y};for(D=0;D<w.length;D++)if(w[D].distSq>v.distSq){w.splice(D,0,v);v=null;break}null==v||0!=w.length&&w[w.length-1].x===v.x&&w[w.length-1].y===v.y||w.push(v)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}v=b[b.length-1];c=e(0,v.x,v.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,
+1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var g=new mxPoint(c,e);g.type=b;d.push(g);g=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==g||g.type!=b||g.x!=c||g.y!=e},g=.5*this.scale,c=!1,d=[],f=0;f<b.length-1;f++){for(var k=
+b[f+1],h=b[f],w=[],v=b[f+2];f<b.length-2&&mxUtils.ptSegDistSq(h.x,h.y,v.x,v.y,k.x,k.y)<1*this.scale*this.scale;)k=v,f++,v=b[f+2];for(var c=e(0,h.x,h.y)||c,z=0;z<this.validEdges.length;z++){var x=this.validEdges[z],F=x.absolutePoints;if(null!=F&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<F.length-1;x++){for(var C=F[x+1],E=F[x],v=F[x+2];x<F.length-2&&mxUtils.ptSegDistSq(E.x,E.y,v.x,v.y,C.x,C.y)<1*this.scale*this.scale;)C=v,x++,v=F[x+2];v=mxUtils.intersection(h.x,h.y,k.x,k.y,E.x,E.y,C.x,
+C.y);if(null!=v&&(Math.abs(v.x-E.x)>g||Math.abs(v.y-E.y)>g)&&(Math.abs(v.x-C.x)>g||Math.abs(v.y-C.y)>g)){C=v.x-h.x;E=v.y-h.y;v={distSq:C*C+E*E,x:v.x,y:v.y};for(C=0;C<w.length;C++)if(w[C].distSq>v.distSq){w.splice(C,0,v);v=null;break}null==v||0!=w.length&&w[w.length-1].x===v.x&&w[w.length-1].y===v.y||w.push(v)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}v=b[b.length-1];c=e(0,v.x,v.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,
 b,c){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)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var v=null;a.begin();for(var z=
-0;z<this.state.routedPoints.length;z++){var x=this.state.routedPoints[z],E=new mxPoint(x.x/this.scale,x.y/this.scale);0==z?E=b[0]:z==this.state.routedPoints.length-1&&(E=b[b.length-1]);var D=!1;if(null!=l&&1==x.type){var F=this.state.routedPoints[z+1],x=F.x/this.scale-E.x,F=F.y/this.scale-E.y,x=x*x+F*F;null==v&&(v=new mxPoint(E.x-l.x,E.y-l.y),m=Math.sqrt(v.x*v.x+v.y*v.y),v.x=v.x*e/m,v.y=v.y*e/m);x>e*e&&0<m&&(x=l.x-E.x,F=l.y-E.y,x=x*x+F*F,x>e*e&&(D=new mxPoint(E.x-v.x,E.y-v.y),x=new mxPoint(E.x+v.x,
-E.y+v.y),h.push(D),this.addPoints(a,h,c,d,!1,null,k),h=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(D.x-v.y*h,D.y+v.x*h),a.lineTo(x.x-v.y*h,x.y+v.x*h),a.lineTo(x.x,x.y)):"arc"==g?(h*=1.3,a.curveTo(D.x-v.y*h,D.y+v.x*h,x.x-v.y*h,x.y+v.x*h,x.x,x.y)):(a.moveTo(x.x,x.y),k=!0),h=[x],D=!0))}else v=null;D||(h.push(E),l=E)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=
+0;z<this.state.routedPoints.length;z++){var x=this.state.routedPoints[z],F=new mxPoint(x.x/this.scale,x.y/this.scale);0==z?F=b[0]:z==this.state.routedPoints.length-1&&(F=b[b.length-1]);var C=!1;if(null!=l&&1==x.type){var E=this.state.routedPoints[z+1],x=E.x/this.scale-F.x,E=E.y/this.scale-F.y,x=x*x+E*E;null==v&&(v=new mxPoint(F.x-l.x,F.y-l.y),m=Math.sqrt(v.x*v.x+v.y*v.y),v.x=v.x*e/m,v.y=v.y*e/m);x>e*e&&0<m&&(x=l.x-F.x,E=l.y-F.y,x=x*x+E*E,x>e*e&&(C=new mxPoint(F.x-v.x,F.y-v.y),x=new mxPoint(F.x+v.x,
+F.y+v.y),h.push(C),this.addPoints(a,h,c,d,!1,null,k),h=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(C.x-v.y*h,C.y+v.x*h),a.lineTo(x.x-v.y*h,x.y+v.x*h),a.lineTo(x.x,x.y)):"arc"==g?(h*=1.3,a.curveTo(C.x-v.y*h,C.y+v.x*h,x.x-v.y*h,x.y+v.x*h,x.x,x.y)):(a.moveTo(x.x,x.y),k=!0),h=[x],C=!0))}else v=null;C||(h.push(F),l=F)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=
 function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)e.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var g=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),g=mxUtils.getRotatedPoint(g,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:
 mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);g=this.getPerimeterPoint(b,g,0==h&&f,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),g=mxUtils.getRotatedPoint(g,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,g),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var g=0;g<a.length;g++){var f=this.graph.getConnectionPoint(b,a[g]);if(null!=f){var h=(f.x-e.x)*(f.x-e.x)+(f.y-e.y)*(f.y-e.y);if(null==
 d||h<d)c=f,d=h}}null!=c&&(e=c)}return e};var h=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=h.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=
@@ -2571,8 +2574,8 @@ if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var f=this.getBoundi
 b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget=
 function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&&
 null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate();try{for(var d=
-0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,q=null!=p?this.getConnectionConstraint(m,
-p,!1):null;this.setConnectionConstraint(e,g,!0,q);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var r=this.view.getState(e);if(null!=r){var t=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==t?t="south":"south"==t?t="west":"west"==t?t="north":"north"==t&&(t="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
+0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,r=null!=p?this.getConnectionConstraint(m,
+p,!1):null;this.setConnectionConstraint(e,g,!0,r);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var q=this.view.getState(e);if(null!=q){var t=q.style[mxConstants.STYLE_DIRECTION]||"east";"east"==t?t="south":"south"==t?t="west":"west"==t?t="north":"north"==t&&(t="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
 t,[e])}c.push(e)}}}finally{b.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var b=this.model.getDescendants(a.cell);if(0<b.length)for(var c=
 0;c<b.length;c++){var d=this.view.getState(b[c]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(b[c]):this.isReplacePlaceholders(b[c])&&this.view.invalidate(b[c],!1,!1)}}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)};
 Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var g=this.convertValueToString(a[e]);if(null!=g&&0<g.length){d.innerHTML=g;for(var f=d.getElementsByTagName(null!=c?c:"*"),h=0;h<f.length;h++)b(f[h]);d.innerHTML!=g&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,c){b=this.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&&
@@ -2600,11 +2603,11 @@ Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells
 try{for(var k=(d-e)/(c.length-1),d=e,g=1;g<c.length-1;g++){var l=this.view.getState(this.model.getParent(c[g].cell)),m=this.getCellGeometry(c[g].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[g].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=
 function(a){for(var b=this.cloneCells(a),c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var g=this.getCellGeometry(b[d]);null==g||!g.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(g.relative=!1,g.x=e.x/e.view.scale-e.view.translate.x,g.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;g=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(g,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport=
 function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,g,f,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;g=null!=g?g:!0;f=null!=f?f:!0;var A=g||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==A)throw Error(mxResources.get("drawingEmpty"));
-var p=this.view.scale,n=mxUtils.createXmlDocument(),B=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"svg"):n.createElement("svg");null!=a&&(null!=B.style?B.style.backgroundColor=a:B.setAttribute("style","background-color:"+a));null==n.createElementNS?(B.setAttribute("xmlns",mxConstants.NS_SVG),B.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):B.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var q=Math.max(1,Math.ceil(A.width*a)+2*c)+(l?5:
-0),u=Math.max(1,Math.ceil(A.height*a)+2*c)+(l?5:0);B.setAttribute("version","1.1");B.setAttribute("width",q+"px");B.setAttribute("height",u+"px");B.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+u);n.appendChild(B);var I=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"g"):n.createElement("g");B.appendChild(I);var r=this.createSvgCanvas(I);r.foOffset=e?-.5:0;r.textOffset=e?-.5:0;r.imageOffset=e?-.5:0;r.translate(Math.floor((c/b-A.x)/p),Math.floor((c/b-A.y)/p));var t=document.createElement("textarea"),
-w=r.createAlternateContent;r.createAlternateContent=function(a,b,c,d,e,g,f,h,k,l,m,A,p){var B=this.state;if(null!=this.foAltText&&(0==d||0!=B.fontSize&&g.length<5*d/B.fontSize)){var n=this.createElement("text");n.setAttribute("x",Math.round(d/2));n.setAttribute("y",Math.round((e+B.fontSize)/2));n.setAttribute("fill",B.fontColor||"black");n.setAttribute("text-anchor","middle");n.setAttribute("font-size",Math.round(B.fontSize)+"px");n.setAttribute("font-family",B.fontFamily);(B.fontStyle&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD&&n.setAttribute("font-weight","bold");(B.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&n.setAttribute("font-style","italic");(B.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&n.setAttribute("text-decoration","underline");try{return t.innerHTML=g,n.textContent=t.value,n}catch(ha){return w.apply(this,arguments)}}else return w.apply(this,arguments)};var v=this.backgroundImage;if(null!=v){b=p/b;var x=this.view.translate,T=new mxRectangle(x.x*b,
-x.y*b,v.width*b,v.height*b);mxUtils.intersects(A,T)&&r.image(x.x,x.y,v.width,v.height,v.src,!0)}r.scale(a);r.textEnabled=f;h=null!=h?h:this.createSvgImageExport();var E=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!g&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(g||d)&&E.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),r);this.updateSvgLinks(B,k,!0);return B}finally{m&&(this.useCssTransforms=
+var p=this.view.scale,n=mxUtils.createXmlDocument(),B=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"svg"):n.createElement("svg");null!=a&&(null!=B.style?B.style.backgroundColor=a:B.setAttribute("style","background-color:"+a));null==n.createElementNS?(B.setAttribute("xmlns",mxConstants.NS_SVG),B.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):B.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var r=Math.max(1,Math.ceil(A.width*a)+2*c)+(l?5:
+0),u=Math.max(1,Math.ceil(A.height*a)+2*c)+(l?5:0);B.setAttribute("version","1.1");B.setAttribute("width",r+"px");B.setAttribute("height",u+"px");B.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+r+" "+u);n.appendChild(B);var I=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"g"):n.createElement("g");B.appendChild(I);var q=this.createSvgCanvas(I);q.foOffset=e?-.5:0;q.textOffset=e?-.5:0;q.imageOffset=e?-.5:0;q.translate(Math.floor((c/b-A.x)/p),Math.floor((c/b-A.y)/p));var t=document.createElement("textarea"),
+w=q.createAlternateContent;q.createAlternateContent=function(a,b,c,d,e,g,f,h,k,l,m,A,p){var B=this.state;if(null!=this.foAltText&&(0==d||0!=B.fontSize&&g.length<5*d/B.fontSize)){var n=this.createElement("text");n.setAttribute("x",Math.round(d/2));n.setAttribute("y",Math.round((e+B.fontSize)/2));n.setAttribute("fill",B.fontColor||"black");n.setAttribute("text-anchor","middle");n.setAttribute("font-size",Math.round(B.fontSize)+"px");n.setAttribute("font-family",B.fontFamily);(B.fontStyle&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD&&n.setAttribute("font-weight","bold");(B.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&n.setAttribute("font-style","italic");(B.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&n.setAttribute("text-decoration","underline");try{return t.innerHTML=g,n.textContent=t.value,n}catch(ha){return w.apply(this,arguments)}}else return w.apply(this,arguments)};var x=this.backgroundImage;if(null!=x){b=p/b;var v=this.view.translate,T=new mxRectangle(v.x*b,
+v.y*b,x.width*b,x.height*b);mxUtils.intersects(A,T)&&q.image(v.x,v.y,x.width,x.height,x.src,!0)}q.scale(a);q.textEnabled=f;h=null!=h?h:this.createSvgImageExport();var z=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!g&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(g||d)&&z.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),q);this.updateSvgLinks(B,k,!0);return B}finally{m&&(this.useCssTransforms=
 !0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a");for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=
 null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a);
 b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart",a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,g=0;g<d.length;g++)var f=d[g].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(b);for(g=0;g<e;g++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=
@@ -2655,15 +2658,15 @@ this.y,this.width,this.height),h=this.graph.getCells(g.x,g.y,g.width,g.height);t
 new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(g,b.getEvent());b.consume()}};mxRubberband.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.first){var c=mxUtils.getScrollOrigin(this.graph.container),d=mxUtils.getOffset(this.graph.container);c.x-=d.x;c.y-=d.y;var d=b.getX()+c.x,c=b.getY()+c.y,e=this.first.x-d,g=this.first.y-c,f=this.graph.tolerance;if(null!=this.div||Math.abs(e)>f||Math.abs(g)>f)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),
 this.update(d,c),this.isSpaceEvent(b)?(d=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(b.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=d-this.width),this.y<this.first.y&&(this.y=c-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor=
 "white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+
-"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),b.consume()}};var q=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null);q.apply(this,arguments)};var r=(new Date).getTime(),t=0,w=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){w.apply(this,arguments);c!=this.currentTerminalState?(r=(new Date).getTime(),t=0):t=(new Date).getTime()-r;this.currentTerminalState=c};var v=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
+"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)),b.consume()}};var r=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
+this.secondDiv=null);r.apply(this,arguments)};var q=(new Date).getTime(),t=0,w=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){w.apply(this,arguments);c!=this.currentTerminalState?(q=(new Date).getTime(),t=0):t=(new Date).getTime()-q;this.currentTerminalState=c};var v=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
 2E3<t||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&v.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,b){var c=null!=a&&0==a,d=this.state.getVisibleTerminalState(c),e=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,
 d,c):null,c=null!=(null!=e?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(c),e):null)?this.fixedHandleImage:null!=e&&null!=d?this.terminalHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var z=mxVertexHandler.prototype.createSizerShape;
 mxVertexHandler.prototype.createSizerShape=function(a,b,c){this.handleImage=b==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:b==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return z.apply(this,arguments)};var x=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var b=this.graph.getModel(),c=b.getParent(a[0]),d=this.graph.getCellGeometry(a[0]);if(b.isEdge(c)&&null!=d&&d.relative&&(b=this.graph.view.getState(a[0]),
-null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return x.apply(this,arguments)};var E=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox,
-new mxRectangle(Math.round(b.x),Math.round(b.y),Math.round(b.width),Math.round(b.height))):E.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,b){var c=this.graph.getModel(),d=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(b)==mxEvent.ROTATION_HANDLE||!c.isEdge(d)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=
-function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var F=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,b){F.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!=
-this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var C=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,b){C.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var M=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){M.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",
+null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return x.apply(this,arguments)};var F=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox,
+new mxRectangle(Math.round(b.x),Math.round(b.y),Math.round(b.width),Math.round(b.height))):F.apply(this,arguments)};var C=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,b){var c=this.graph.getModel(),d=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(b)==mxEvent.ROTATION_HANDLE||!c.isEdge(d)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&C.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=
+function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var E=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,b){E.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!=
+this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var D=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,b){D.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var M=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){M.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",
 mxResources.get("rotateTooltip"));var b=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,c){b()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,
 this.selectionHandler);this.changeHandler=mxUtils.bind(this,function(a,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,b){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var c=this.graph.getLinkForCell(this.state.cell),d=this.graph.getLinksForState(this.state);this.updateLinkHint(c,
 d);if(null!=c||null!=d&&0<d.length)a=!0;a&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(b,c){if(null==b&&(null==c||0==c.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=b||null!=c&&0<c.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));
@@ -2696,8 +2699,8 @@ a,d));else{var f=this.getSelectionState().containsLabel,e=null,h=null,c=mxUtils.
 "mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));c==(f?this.labelIndex:this.currentIndex)&&d()}),g=0;b.style.backgroundColor=this.inactiveTabBackgroundColor;b.style.borderLeftWidth="1px";b.style.cursor="pointer";b.style.width=f?"50%":"33.3%";b.style.width=f?"50%":"33.3%";var k=b.cloneNode(!1),l=k.cloneNode(!1);k.style.backgroundColor=this.inactiveTabBackgroundColor;l.style.backgroundColor=this.inactiveTabBackgroundColor;if(f)k.style.borderLeftWidth="0px";else{b.style.borderLeftWidth=
 "0px";mxUtils.write(b,mxResources.get("style"));d.appendChild(b);var m=d.cloneNode(!1);m.style.display="none";this.panels.push(new StyleFormatPanel(this,a,m));this.container.appendChild(m);c(b,m,g++)}mxUtils.write(k,mxResources.get("text"));d.appendChild(k);b=d.cloneNode(!1);b.style.display="none";this.panels.push(new TextFormatPanel(this,a,b));this.container.appendChild(b);mxUtils.write(l,mxResources.get("arrange"));d.appendChild(l);d=d.cloneNode(!1);d.style.display="none";this.panels.push(new ArrangePanel(this,
 a,d));this.container.appendChild(d);c(k,b,g++);c(l,d,g++)}}};BaseFormatPanel=function(a,c,d){this.format=a;this.editorUi=c;this.container=d;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";BaseFormatPanel.prototype.getSelectionState=function(){for(var a=this.editorUi.editor.graph,c=a.getSelectionCells(),d=null,b=0;b<c.length;b++){var f=a.view.getState(c[b]);if(null!=f&&(f=mxUtils.getValue(f.style,mxConstants.STYLE_SHAPE,null),null!=f))if(null==d)d=f;else if(d!=f)return null}return d};
-BaseFormatPanel.prototype.installInputHandler=function(a,c,d,b,f,e,h,g){e=null!=e?e:"";g=null!=g?g:!1;var k=this.editorUi,l=k.editor.graph;b=null!=b?b:1;f=null!=f?f:999;var m=null,p=!1,n=mxUtils.bind(this,function(n){var q=g?parseFloat(a.value):parseInt(a.value);isNaN(q)||c!=mxConstants.STYLE_ROTATION||(q=mxUtils.mod(Math.round(100*q),36E3)/100);q=Math.min(f,Math.max(b,isNaN(q)?d:q));if(l.cellEditor.isContentEditing()&&h)p||(p=!0,null!=m&&(l.cellEditor.restoreSelection(m),m=null),h(q),a.value=q+e,
-p=!1);else if(q!=mxUtils.getValue(this.format.getSelectionState().style,c,d)){l.isEditing()&&l.stopEditing(!0);l.getModel().beginUpdate();try{l.setCellStyles(c,q,l.getSelectionCells()),c==mxConstants.STYLE_FONTSIZE&&l.updateLabelElements(l.getSelectionCells(),function(a){a.style.fontSize=q+"px";a.removeAttribute("size")}),k.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[q],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}a.value=q+e;mxEvent.consume(n)});h&&l.cellEditor.isContentEditing()&&
+BaseFormatPanel.prototype.installInputHandler=function(a,c,d,b,f,e,h,g){e=null!=e?e:"";g=null!=g?g:!1;var k=this.editorUi,l=k.editor.graph;b=null!=b?b:1;f=null!=f?f:999;var m=null,p=!1,n=mxUtils.bind(this,function(n){var r=g?parseFloat(a.value):parseInt(a.value);isNaN(r)||c!=mxConstants.STYLE_ROTATION||(r=mxUtils.mod(Math.round(100*r),36E3)/100);r=Math.min(f,Math.max(b,isNaN(r)?d:r));if(l.cellEditor.isContentEditing()&&h)p||(p=!0,null!=m&&(l.cellEditor.restoreSelection(m),m=null),h(r),a.value=r+e,
+p=!1);else if(r!=mxUtils.getValue(this.format.getSelectionState().style,c,d)){l.isEditing()&&l.stopEditing(!0);l.getModel().beginUpdate();try{l.setCellStyles(c,r,l.getSelectionCells()),c==mxConstants.STYLE_FONTSIZE&&l.updateLabelElements(l.getSelectionCells(),function(a){a.style.fontSize=r+"px";a.removeAttribute("size")}),k.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[r],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}a.value=r+e;mxEvent.consume(n)});h&&l.cellEditor.isContentEditing()&&
 (mxEvent.addListener(a,"mousedown",function(){document.activeElement==l.cellEditor.textarea&&(m=l.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==l.cellEditor.textarea&&(m=l.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",n);mxEvent.addListener(a,"blur",n);return n};BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.style.padding="12px 0px 12px 18px";a.style.borderBottom="1px solid #c0c0c0";return a};
 BaseFormatPanel.prototype.createTitle=function(a){var c=document.createElement("div");c.style.padding="0px 0px 6px 0px";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.width="200px";c.style.fontWeight="bold";mxUtils.write(c,a);return c};
 BaseFormatPanel.prototype.createStepper=function(a,c,d,b,f,e){d=null!=d?d:1;b=null!=b?b:8;if(mxClient.IS_QUIRKS)b-=2;else if(mxClient.IS_MT||8<=document.documentMode)b+=1;var h=document.createElement("div");mxUtils.setPrefixedStyle(h.style,"borderRadius","3px");h.style.border="1px solid rgb(192, 192, 192)";h.style.position="absolute";var g=document.createElement("div");g.style.borderBottom="1px solid rgb(192, 192, 192)";g.style.position="relative";g.style.height=b+"px";g.style.width="10px";g.className=
@@ -2745,34 +2748,34 @@ ArrangePanel.prototype.addAngle=function(a){var c=this.editorUi,d=c.editor.graph
 a=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)),e.value=isNaN(a)?"":a+"°"}),h=this.installInputHandler(e,mxConstants.STYLE_ROTATION,0,0,360,"°",null,!0);this.addKeyHandler(e,k);d.getModel().addListener(mxEvent.CHANGE,k);this.listeners.push({destroy:function(){d.getModel().removeListener(k)}});k()}return a};
 ArrangePanel.prototype.addGeometry=function(a){var c=this.editorUi,d=c.editor.graph,b=this.format.getSelectionState(),f=this.createPanel();f.style.paddingBottom="8px";var e=document.createElement("div");e.style.position="absolute";e.style.width="50px";e.style.marginTop="0px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("size"));f.appendChild(e);var h,g,k,l,m=this.addUnitInput(f,"pt",84,44,function(){h.apply(this,arguments)}),p=this.addUnitInput(f,"pt",20,44,function(){g.apply(this,arguments)}),
 n=document.createElement("div");n.className="geSprite geSprite-fit";n.setAttribute("title",mxResources.get("autosize")+" ("+this.editorUi.actions.get("autosize").shortcut+")");n.style.position="relative";n.style.cursor="pointer";n.style.marginTop="-3px";n.style.border="0px";n.style.left="52px";mxUtils.setOpacity(n,50);mxEvent.addListener(n,"mouseenter",function(){mxUtils.setOpacity(n,100)});mxEvent.addListener(n,"mouseleave",function(){mxUtils.setOpacity(n,50)});mxEvent.addListener(n,"click",function(){c.actions.get("autosize").funct()});
-f.appendChild(n);this.addLabel(f,mxResources.get("width"),84);this.addLabel(f,mxResources.get("height"),20);mxUtils.br(f);e=document.createElement("div");e.style.paddingTop="8px";e.style.paddingRight="20px";e.style.whiteSpace="nowrap";e.style.textAlign="right";var u=this.createCellOption(mxResources.get("constrainProportions"),mxConstants.STYLE_ASPECT,null,"fixed","null");u.style.width="100%";e.appendChild(u);f.appendChild(e);var q=u.getElementsByTagName("input")[0];this.addKeyHandler(m,v);this.addKeyHandler(p,
-v);h=this.addGeometryHandler(m,function(a,b){0<a.width&&(b=Math.max(1,b),q.checked&&(a.height=Math.round(a.height*b*100/a.width)/100),a.width=b)});g=this.addGeometryHandler(p,function(a,b){0<a.height&&(b=Math.max(1,b),q.checked&&(a.width=Math.round(a.width*b*100/a.height)/100),a.height=b)});a.appendChild(f);var r=this.createPanel();r.style.paddingBottom="30px";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("position"));r.appendChild(e);var t=this.addUnitInput(r,"pt",84,44,function(){k.apply(this,arguments)}),w=this.addUnitInput(r,"pt",20,44,function(){l.apply(this,arguments)});mxUtils.br(r);this.addLabel(r,mxResources.get("left"),84);this.addLabel(r,mxResources.get("top"),20);var v=mxUtils.bind(this,function(a,c,e){b=this.format.getSelectionState();if(b.containsLabel||b.vertices.length!=d.getSelectionCount()||null==b.width||null==b.height)f.style.display="none";else{f.style.display=
-"";if(e||document.activeElement!=m)m.value=b.width+(""==b.width?"":" pt");if(e||document.activeElement!=p)p.value=b.height+(""==b.height?"":" pt")}if(b.vertices.length==d.getSelectionCount()&&null!=b.x&&null!=b.y){r.style.display="";if(e||document.activeElement!=t)t.value=b.x+(""==b.x?"":" pt");if(e||document.activeElement!=w)w.value=b.y+(""==b.y?"":" pt")}else r.style.display="none"});this.addKeyHandler(t,v);this.addKeyHandler(w,v);d.getModel().addListener(mxEvent.CHANGE,v);this.listeners.push({destroy:function(){d.getModel().removeListener(v)}});
-v();k=this.addGeometryHandler(t,function(a,b){a.relative?a.offset.x=b:a.x=b});l=this.addGeometryHandler(w,function(a,b){a.relative?a.offset.y=b:a.y=b});a.appendChild(r)};
+f.appendChild(n);this.addLabel(f,mxResources.get("width"),84);this.addLabel(f,mxResources.get("height"),20);mxUtils.br(f);e=document.createElement("div");e.style.paddingTop="8px";e.style.paddingRight="20px";e.style.whiteSpace="nowrap";e.style.textAlign="right";var u=this.createCellOption(mxResources.get("constrainProportions"),mxConstants.STYLE_ASPECT,null,"fixed","null");u.style.width="100%";e.appendChild(u);f.appendChild(e);var r=u.getElementsByTagName("input")[0];this.addKeyHandler(m,v);this.addKeyHandler(p,
+v);h=this.addGeometryHandler(m,function(a,b){0<a.width&&(b=Math.max(1,b),r.checked&&(a.height=Math.round(a.height*b*100/a.width)/100),a.width=b)});g=this.addGeometryHandler(p,function(a,b){0<a.height&&(b=Math.max(1,b),r.checked&&(a.width=Math.round(a.width*b*100/a.height)/100),a.height=b)});a.appendChild(f);var q=this.createPanel();q.style.paddingBottom="30px";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("position"));q.appendChild(e);var t=this.addUnitInput(q,"pt",84,44,function(){k.apply(this,arguments)}),w=this.addUnitInput(q,"pt",20,44,function(){l.apply(this,arguments)});mxUtils.br(q);this.addLabel(q,mxResources.get("left"),84);this.addLabel(q,mxResources.get("top"),20);var v=mxUtils.bind(this,function(a,c,e){b=this.format.getSelectionState();if(b.containsLabel||b.vertices.length!=d.getSelectionCount()||null==b.width||null==b.height)f.style.display="none";else{f.style.display=
+"";if(e||document.activeElement!=m)m.value=b.width+(""==b.width?"":" pt");if(e||document.activeElement!=p)p.value=b.height+(""==b.height?"":" pt")}if(b.vertices.length==d.getSelectionCount()&&null!=b.x&&null!=b.y){q.style.display="";if(e||document.activeElement!=t)t.value=b.x+(""==b.x?"":" pt");if(e||document.activeElement!=w)w.value=b.y+(""==b.y?"":" pt")}else q.style.display="none"});this.addKeyHandler(t,v);this.addKeyHandler(w,v);d.getModel().addListener(mxEvent.CHANGE,v);this.listeners.push({destroy:function(){d.getModel().removeListener(v)}});
+v();k=this.addGeometryHandler(t,function(a,b){a.relative?a.offset.x=b:a.x=b});l=this.addGeometryHandler(w,function(a,b){a.relative?a.offset.y=b:a.y=b});a.appendChild(q)};
 ArrangePanel.prototype.addGeometryHandler=function(a,c){function d(d){if(""!=a.value){var e=parseFloat(a.value);if(isNaN(e))a.value=f+" pt";else if(e!=f){b.getModel().beginUpdate();try{for(var g=b.getSelectionCells(),k=0;k<g.length;k++)if(b.getModel().isVertex(g[k])){var l=b.getCellGeometry(g[k]);null!=l&&(l=l.clone(),c(l,e),b.getModel().setGeometry(g[k],l))}}finally{b.getModel().endUpdate()}f=e;a.value=e+" pt"}}mxEvent.consume(d)}var b=this.editorUi.editor.graph,f=null;mxEvent.addListener(a,"blur",
 d);mxEvent.addListener(a,"change",d);mxEvent.addListener(a,"focus",function(){f=a.value});return d};
 ArrangePanel.prototype.addEdgeGeometryHandler=function(a,c){function d(d){if(""!=a.value){var e=parseFloat(a.value);if(isNaN(e))a.value=f+" pt";else if(e!=f){b.getModel().beginUpdate();try{for(var g=b.getSelectionCells(),k=0;k<g.length;k++)if(b.getModel().isEdge(g[k])){var l=b.getCellGeometry(g[k]);null!=l&&(l=l.clone(),c(l,e),b.getModel().setGeometry(g[k],l))}}finally{b.getModel().endUpdate()}f=e;a.value=e+" pt"}}mxEvent.consume(d)}var b=this.editorUi.editor.graph,f=null;mxEvent.addListener(a,"blur",
 d);mxEvent.addListener(a,"change",d);mxEvent.addListener(a,"focus",function(){f=a.value});return d};
 ArrangePanel.prototype.addEdgeGeometry=function(a){function c(a){var c=parseInt(p.value),c=Math.min(999,Math.max(1,isNaN(c)?1:c));c!=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)&&(b.setCellStyles("width",c,b.getSelectionCells()),d.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[c],"cells",b.getSelectionCells())));p.value=c+" pt";mxEvent.consume(a)}var d=this.editorUi,b=d.editor.graph,f=this.format.getSelectionState(),e=this.createPanel(),
 h=document.createElement("div");h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,mxResources.get("width"));e.appendChild(h);var g,k,l,m,p=this.addUnitInput(e,"pt",20,44,function(){c.apply(this,arguments)});mxUtils.br(e);this.addKeyHandler(p,v);mxEvent.addListener(p,"blur",c);mxEvent.addListener(p,"change",c);a.appendChild(e);var n=this.createPanel();n.style.paddingBottom="30px";h=document.createElement("div");h.style.position="absolute";
-h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"Start");n.appendChild(h);var u=this.addUnitInput(n,"pt",84,44,function(){l.apply(this,arguments)}),q=this.addUnitInput(n,"pt",20,44,function(){m.apply(this,arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("left"),84);this.addLabel(n,mxResources.get("top"),20);a.appendChild(n);this.addKeyHandler(u,v);this.addKeyHandler(q,v);var r=this.createPanel();r.style.paddingBottom="30px";h=document.createElement("div");
-h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"End");r.appendChild(h);var t=this.addUnitInput(r,"pt",84,44,function(){g.apply(this,arguments)}),w=this.addUnitInput(r,"pt",20,44,function(){k.apply(this,arguments)});mxUtils.br(r);this.addLabel(r,mxResources.get("left"),84);this.addLabel(r,mxResources.get("top"),20);a.appendChild(r);this.addKeyHandler(t,v);this.addKeyHandler(w,v);var v=mxUtils.bind(this,function(a,c,d){f=this.format.getSelectionState();
-a=b.getSelectionCell();if("link"==f.style.shape||"flexArrow"==f.style.shape){if(e.style.display="",d||document.activeElement!=p)d=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),p.value=d+" pt"}else e.style.display="none";1==b.getSelectionCount()&&b.model.isEdge(a)?(d=b.model.getGeometry(a),null!=d.sourcePoint&&null==b.model.getTerminal(a,!0)?(u.value=d.sourcePoint.x,q.value=d.sourcePoint.y):n.style.display="none",null!=d.targetPoint&&null==b.model.getTerminal(a,
-!1)?(t.value=d.targetPoint.x,w.value=d.targetPoint.y):r.style.display="none"):(n.style.display="none",r.style.display="none")});l=this.addEdgeGeometryHandler(u,function(a,b){a.sourcePoint.x=b});m=this.addEdgeGeometryHandler(q,function(a,b){a.sourcePoint.y=b});g=this.addEdgeGeometryHandler(t,function(a,b){a.targetPoint.x=b});k=this.addEdgeGeometryHandler(w,function(a,b){a.targetPoint.y=b});b.getModel().addListener(mxEvent.CHANGE,v);this.listeners.push({destroy:function(){b.getModel().removeListener(v)}});
+h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"Start");n.appendChild(h);var u=this.addUnitInput(n,"pt",84,44,function(){l.apply(this,arguments)}),r=this.addUnitInput(n,"pt",20,44,function(){m.apply(this,arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("left"),84);this.addLabel(n,mxResources.get("top"),20);a.appendChild(n);this.addKeyHandler(u,v);this.addKeyHandler(r,v);var q=this.createPanel();q.style.paddingBottom="30px";h=document.createElement("div");
+h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"End");q.appendChild(h);var t=this.addUnitInput(q,"pt",84,44,function(){g.apply(this,arguments)}),w=this.addUnitInput(q,"pt",20,44,function(){k.apply(this,arguments)});mxUtils.br(q);this.addLabel(q,mxResources.get("left"),84);this.addLabel(q,mxResources.get("top"),20);a.appendChild(q);this.addKeyHandler(t,v);this.addKeyHandler(w,v);var v=mxUtils.bind(this,function(a,c,d){f=this.format.getSelectionState();
+a=b.getSelectionCell();if("link"==f.style.shape||"flexArrow"==f.style.shape){if(e.style.display="",d||document.activeElement!=p)d=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),p.value=d+" pt"}else e.style.display="none";1==b.getSelectionCount()&&b.model.isEdge(a)?(d=b.model.getGeometry(a),null!=d.sourcePoint&&null==b.model.getTerminal(a,!0)?(u.value=d.sourcePoint.x,r.value=d.sourcePoint.y):n.style.display="none",null!=d.targetPoint&&null==b.model.getTerminal(a,
+!1)?(t.value=d.targetPoint.x,w.value=d.targetPoint.y):q.style.display="none"):(n.style.display="none",q.style.display="none")});l=this.addEdgeGeometryHandler(u,function(a,b){a.sourcePoint.x=b});m=this.addEdgeGeometryHandler(r,function(a,b){a.sourcePoint.y=b});g=this.addEdgeGeometryHandler(t,function(a,b){a.targetPoint.x=b});k=this.addEdgeGeometryHandler(w,function(a,b){a.targetPoint.y=b});b.getModel().addListener(mxEvent.CHANGE,v);this.listeners.push({destroy:function(){b.getModel().removeListener(v)}});
 v()};TextFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);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 c(a,b){mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?a.style.filter=b?"progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#c5ecff', EndColorStr='#87d4fb', GradientType=0)":"":a.style.backgroundImage=b?"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var d=this.editorUi,b=d.editor.graph,f=this.format.getSelectionState(),e=this.createTitle(mxResources.get("font"));e.style.paddingLeft="18px";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";mxClient.IS_QUIRKS&&(e.style.display="block");if(b.cellEditor.isContentEditing()){var h=e.cloneNode(),g=this.editorUi.toolbar.addMenu(mxResources.get("style"),mxResources.get("style"),!0,"formatBlock",h,null,!0);g.style.color="rgb(112, 112, 112)";g.style.whiteSpace="nowrap";g.style.overflow=
 "hidden";g.style.margin="0px";this.addArrow(g);g.style.width="192px";g.style.height="15px";var k=g.getElementsByTagName("div")[0];k.style.cssFloat="right";a.appendChild(h);mxClient.IS_FF&&(g.getElementsByTagName("div")[0].style.marginTop="-18px")}a.appendChild(e);h=this.createPanel();h.style.marginTop="8px";h.style.borderTop="1px solid #c0c0c0";h.style.paddingTop="6px";h.style.paddingBottom="6px";var l=this.editorUi.toolbar.addMenu("Helvetica",mxResources.get("fontFamily"),!0,"fontFamily",e,null,
 !0);l.style.color="rgb(112, 112, 112)";l.style.whiteSpace="nowrap";l.style.overflow="hidden";l.style.margin="0px";this.addArrow(l);l.style.width="192px";l.style.height="15px";mxClient.IS_FF&&(l.getElementsByTagName("div")[0].style.marginTop="-18px");k=e.cloneNode(!1);k.style.marginLeft="-3px";var m=this.editorUi.toolbar.addItems(["bold","italic","underline"],k,!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 p=this.editorUi.toolbar.addItems(["vertical"],k,!0)[0];mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(k);this.styleButtons(m);this.styleButtons([p]);g=e.cloneNode(!1);g.style.marginLeft="-3px";g.style.paddingBottom="0px";var n=function(a){return function(){return a()}},u=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),
-b.cellEditor.isContentEditing()?function(){document.execCommand("justifyleft",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),g),q=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifycenter",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),g),r=this.editorUi.toolbar.addButton("geSprite-right",
-mxResources.get("right"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifyright",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),g);this.styleButtons([u,q,r]);if(b.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
+b.cellEditor.isContentEditing()?function(){document.execCommand("justifyleft",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),g),r=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifycenter",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),g),q=this.editorUi.toolbar.addButton("geSprite-right",
+mxResources.get("right"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifyright",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),g);this.styleButtons([u,r,q]);if(b.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
 t.firstChild.style.backgroundPosition="2px 2px";t.firstChild.style.backgroundSize="18px 18px";this.styleButtons([t])}var w=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),g),v=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),g),z=this.editorUi.toolbar.addButton("geSprite-bottom",
-mxResources.get("bottom"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),g);this.styleButtons([w,v,z]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);var x,E,D,F,C,M,L;b.cellEditor.isContentEditing()?(w.style.display="none",v.style.display="none",z.style.display="none",p.style.display="none",D=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){document.execCommand("justifyfull",!1,null)},g),
-this.styleButtons([D,x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},g),E=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},g)]),D.style.marginRight="9px",n=g.cloneNode(!1),n.style.paddingTop="4px",g=[this.editorUi.toolbar.addButton("geSprite-orderedlist",mxResources.get("numberedList"),
+mxResources.get("bottom"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),g);this.styleButtons([w,v,z]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);var x,F,C,E,D,M,L;b.cellEditor.isContentEditing()?(w.style.display="none",v.style.display="none",z.style.display="none",p.style.display="none",C=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){document.execCommand("justifyfull",!1,null)},g),
+this.styleButtons([C,x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},g),F=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},g)]),C.style.marginRight="9px",n=g.cloneNode(!1),n.style.paddingTop="4px",g=[this.editorUi.toolbar.addButton("geSprite-orderedlist",mxResources.get("numberedList"),
 function(){document.execCommand("insertorderedlist",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-removeformat",
-mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode()},n)],this.styleButtons(g),g[g.length-2].style.marginLeft="9px",mxClient.IS_QUIRKS&&(mxUtils.br(a),n.style.height="40"),a.appendChild(n)):(m[2].style.marginRight="9px",r.style.marginRight="9px");g=e.cloneNode(!1);g.style.marginLeft="0px";g.style.paddingTop="8px";g.style.paddingBottom="4px";g.style.fontWeight=
+mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode()},n)],this.styleButtons(g),g[g.length-2].style.marginLeft="9px",mxClient.IS_QUIRKS&&(mxUtils.br(a),n.style.height="40"),a.appendChild(n)):(m[2].style.marginRight="9px",q.style.marginRight="9px");g=e.cloneNode(!1);g.style.marginLeft="0px";g.style.paddingTop="8px";g.style.paddingBottom="4px";g.style.fontWeight=
 "normal";mxUtils.write(g,mxResources.get("position"));var J=document.createElement("select");J.style.position="absolute";J.style.right="20px";J.style.width="97px";J.style.marginTop="-2px";for(var t="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),G={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]},n=0;n<t.length;n++){var K=document.createElement("option");K.setAttribute("value",t[n]);mxUtils.write(K,mxResources.get(t[n]));J.appendChild(K)}g.appendChild(J);t=e.cloneNode(!1);t.style.marginLeft="0px";t.style.paddingTop="4px";t.style.paddingBottom="4px";t.style.fontWeight="normal";mxUtils.write(t,mxResources.get("writingDirection"));
@@ -2791,25 +2794,25 @@ k.style.paddingBottom="28px";k.style.fontWeight="normal";g=document.createElemen
 null,null,function(a){var c=""==a.value?120:parseInt(a.value),c=Math.max(0,isNaN(c)?120:c);null!=ea&&(b.cellEditor.restoreSelection(ea),ea=null);for(var d=b.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;null!=d&&d==b.cellEditor.textarea&&null!=b.cellEditor.textarea.firstChild&&("P"!=b.cellEditor.textarea.firstChild.nodeName&&(b.cellEditor.textarea.innerHTML="<p>"+b.cellEditor.textarea.innerHTML+"</p>"),d=b.cellEditor.textarea.firstChild);null!=d&&d!=b.cellEditor.textarea&&
 b.cellEditor.textarea.contains(d)&&(d.style.lineHeight=c+"%");a.value=c+" %"},function(a){ja=a;mxEvent.addListener(a,"mousedown",function(){document.activeElement==b.cellEditor.textarea&&(ea=b.cellEditor.saveSelection())});mxEvent.addListener(a,"touchstart",function(){document.activeElement==b.cellEditor.textarea&&(ea=b.cellEditor.saveSelection())});a.value="120 %"}));h=e.cloneNode(!1);h.style.paddingLeft="0px";k=this.editorUi.toolbar.addItems(["link","image"],h,!0);g=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",
 mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},h),this.editorUi.toolbar.addMenuFunctionInContainer(h,"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.addInsertTableItem(a)}))];this.styleButtons(k);this.styleButtons(g);k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("insert")));k.appendChild(h);a.appendChild(k);mxClient.IS_QUIRKS&&
-(k.style.height="70");k=e.cloneNode(!1);k.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{null!=C&&b.selectNode(b.insertColumn(C,null!=M?M.cellIndex:0))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=C&&b.selectNode(b.insertColumn(C,null!=M?M.cellIndex+1:
--1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=C&&null!=M&&b.deleteColumn(C,M.cellIndex)}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=C&&null!=L&&b.selectNode(b.insertRow(C,L.sectionRowIndex))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowafter",
-mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=C&&null!=L&&b.selectNode(b.insertRow(C,L.sectionRowIndex+1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=C&&null!=L&&b.deleteRow(C,L.sectionRowIndex)}catch(S){this.editorUi.handleError(S)}}),k)];this.styleButtons(g);g[2].style.marginRight="9px";h=this.createPanel();h.style.paddingTop="10px";h.style.paddingBottom=
-"10px";h.appendChild(this.createTitle(mxResources.get("table")));h.appendChild(k);mxClient.IS_QUIRKS&&(mxUtils.br(a),h.style.height="70");e=e.cloneNode(!1);e.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,function(){if(null!=C){var a=C.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+
-("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){null==a||a==mxConstants.NONE?(C.removeAttribute("border"),C.style.border="",C.style.borderCollapse=""):(C.setAttribute("border","1"),C.style.border="1px solid "+a,C.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(){if(null!=C){var a=C.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,
-function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){C.style.backgroundColor=null==a||a==mxConstants.NONE?"":a})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=C){var a=C.getAttribute("cellPadding")||0,a=new FilenameDialog(d,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?C.setAttribute("cellPadding",
-a):C.removeAttribute("cellPadding")}),mxResources.get("spacing"));d.showDialog(a.container,300,80,!0,!0);a.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=C&&C.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=C&&C.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=C&&C.setAttribute("align","right")},
-e)];this.styleButtons(g);g[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);F=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var W=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(a&mxConstants.FONT_ITALIC)==
+(k.style.height="70");k=e.cloneNode(!1);k.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{null!=D&&b.selectNode(b.insertColumn(D,null!=M?M.cellIndex:0))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=D&&b.selectNode(b.insertColumn(D,null!=M?M.cellIndex+1:
+-1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=D&&null!=M&&b.deleteColumn(D,M.cellIndex)}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=D&&null!=L&&b.selectNode(b.insertRow(D,L.sectionRowIndex))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowafter",
+mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=D&&null!=L&&b.selectNode(b.insertRow(D,L.sectionRowIndex+1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=D&&null!=L&&b.deleteRow(D,L.sectionRowIndex)}catch(S){this.editorUi.handleError(S)}}),k)];this.styleButtons(g);g[2].style.marginRight="9px";h=this.createPanel();h.style.paddingTop="10px";h.style.paddingBottom=
+"10px";h.appendChild(this.createTitle(mxResources.get("table")));h.appendChild(k);mxClient.IS_QUIRKS&&(mxUtils.br(a),h.style.height="70");e=e.cloneNode(!1);e.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,function(){if(null!=D){var a=D.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+
+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){null==a||a==mxConstants.NONE?(D.removeAttribute("border"),D.style.border="",D.style.borderCollapse=""):(D.setAttribute("border","1"),D.style.border="1px solid "+a,D.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(){if(null!=D){var a=D.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,
+function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){D.style.backgroundColor=null==a||a==mxConstants.NONE?"":a})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=D){var a=D.getAttribute("cellPadding")||0,a=new FilenameDialog(d,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?D.setAttribute("cellPadding",
+a):D.removeAttribute("cellPadding")}),mxResources.get("spacing"));d.showDialog(a.container,300,80,!0,!0);a.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=D&&D.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=D&&D.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=D&&D.setAttribute("align","right")},
+e)];this.styleButtons(g);g[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);E=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var W=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(a&mxConstants.FONT_ITALIC)==
 mxConstants.FONT_ITALIC);c(m[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);l.firstChild.nodeValue=mxUtils.htmlEntities(mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont));c(p,"0"==mxUtils.getValue(f.style,mxConstants.STYLE_HORIZONTAL,"1"));if(d||document.activeElement!=H)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),H.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);
-c(u,a==mxConstants.ALIGN_LEFT);c(q,a==mxConstants.ALIGN_CENTER);c(r,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(w,a==mxConstants.ALIGN_TOP);c(v,a==mxConstants.ALIGN_MIDDLE);c(z,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);J.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP?
+c(u,a==mxConstants.ALIGN_LEFT);c(r,a==mxConstants.ALIGN_CENTER);c(q,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(w,a==mxConstants.ALIGN_TOP);c(v,a==mxConstants.ALIGN_MIDDLE);c(z,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);J.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP?
 "topLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(f.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION);
 a==mxConstants.TEXT_DIRECTION_RTL?O.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?O.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(O.value="automatic");if(d||document.activeElement!=fa)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING,2)),fa.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ca)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),ca.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Z)a=parseFloat(mxUtils.getValue(f.style,
 mxConstants.STYLE_SPACING_RIGHT,0)),Z.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Y)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,0)),Y.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ga)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_LEFT,0)),ga.value=isNaN(a)?"":a+" pt"});ka=this.installInputHandler(fa,mxConstants.STYLE_SPACING,2,-999,999," pt");aa=this.installInputHandler(ca,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");la=this.installInputHandler(Z,
 mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");R=this.installInputHandler(Y,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");ba=this.installInputHandler(ga,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(H,W);this.addKeyHandler(fa,W);this.addKeyHandler(ca,W);this.addKeyHandler(Z,W);this.addKeyHandler(Y,W);this.addKeyHandler(ga,W);b.getModel().addListener(mxEvent.CHANGE,W);this.listeners.push({destroy:function(){b.getModel().removeListener(W)}});W();if(b.cellEditor.isContentEditing()){var ma=
 !1,e=function(){ma||(ma=!0,window.setTimeout(function(){for(var a=b.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;if(null!=a){var d=function(a,b){if(null!=a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(c){if(null!=b.getParentByName(a,c,b.cellEditor.textarea))return!0;for(var d=a;null!=d&&1==d.childNodes.length;)if(d=d.childNodes[0],d.nodeName==c)return!0;return!1},g=function(a){a=
 null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},f=function(a,b,c){return null!=c.style&&null!=b?(b=b.lineHeight,"%"==c.style.lineHeight.substring(c.style.lineHeight.length-1)?parseInt(c.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""};a==b.cellEditor.textarea&&1==b.cellEditor.textarea.children.length&&b.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=b.cellEditor.textarea.firstChild);
-var h=mxUtils.getCurrentStyle(a),k=g(h),p=f(k,h,a),n=a.getElementsByTagName("*");if(0<n.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var t=window.getSelection(),v=0;v<n.length;v++)if(t.containsNode(n[v],!0)){temp=mxUtils.getCurrentStyle(n[v]);var k=Math.max(g(temp),k),w=f(k,temp,n[v]);if(w!=p||isNaN(w))p=""}null!=h&&(c(m[0],"bold"==h.fontWeight||400<h.fontWeight||e("B")||e("STRONG")),c(m[1],"italic"==h.fontStyle||e("I")||e("EM")),c(m[2],e("U")),c(u,d(h.textAlign,"left")),c(q,
-d(h.textAlign,"center")),c(r,d(h.textAlign,"right")),c(D,d(h.textAlign,"justify")),c(E,e("SUP")),c(x,e("SUB")),C=b.getParentByName(a,"TABLE",b.cellEditor.textarea),L=null==C?null:b.getParentByName(a,"TR",C),M=null==C?null:b.getParentByName(a,"TD",C),F.style.display=null!=C?"":"none",document.activeElement!=H&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=B?(a.removeAttribute("size"),a.style.fontSize=B+" pt",B=null):H.value=isNaN(k)?"":k+" pt",w=parseFloat(p),isNaN(w)?ja.value="100 %":ja.value=
-Math.round(100*w)+" %"),d=h.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),e=h.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),null!=T&&(U="#"==d.charAt(0)?
+var h=mxUtils.getCurrentStyle(a),k=g(h),p=f(k,h,a),n=a.getElementsByTagName("*");if(0<n.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var t=window.getSelection(),w=0;w<n.length;w++)if(t.containsNode(n[w],!0)){temp=mxUtils.getCurrentStyle(n[w]);var k=Math.max(g(temp),k),v=f(k,temp,n[w]);if(v!=p||isNaN(v))p=""}null!=h&&(c(m[0],"bold"==h.fontWeight||400<h.fontWeight||e("B")||e("STRONG")),c(m[1],"italic"==h.fontStyle||e("I")||e("EM")),c(m[2],e("U")),c(u,d(h.textAlign,"left")),c(r,
+d(h.textAlign,"center")),c(q,d(h.textAlign,"right")),c(C,d(h.textAlign,"justify")),c(F,e("SUP")),c(x,e("SUB")),D=b.getParentByName(a,"TABLE",b.cellEditor.textarea),L=null==D?null:b.getParentByName(a,"TR",D),M=null==D?null:b.getParentByName(a,"TD",D),E.style.display=null!=D?"":"none",document.activeElement!=H&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=B?(a.removeAttribute("size"),a.style.fontSize=B+" pt",B=null):H.value=isNaN(k)?"":k+" pt",v=parseFloat(p),isNaN(v)?ja.value="100 %":ja.value=
+Math.round(100*v)+" %"),d=h.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),e=h.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),null!=T&&(U="#"==d.charAt(0)?
 d:"#000000",T(U,!0)),null!=I&&(A="#"==e.charAt(0)?e:null,I(A,!0)),null!=l.firstChild&&(h=h.fontFamily,"'"==h.charAt(0)&&(h=h.substring(1)),"'"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),'"'==h.charAt(0)&&(h=h.substring(1)),'"'==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),l.firstChild.nodeValue=h))}ma=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(b.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(b.cellEditor.textarea,
 "input",e);mxEvent.addListener(b.cellEditor.textarea,"touchend",e);mxEvent.addListener(b.cellEditor.textarea,"mouseup",e);mxEvent.addListener(b.cellEditor.textarea,"keyup",e);this.listeners.push({destroy:function(){}});e()}return a};StyleFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);StyleFormatPanel.prototype.defaultStrokeColor="black";
 StyleFormatPanel.prototype.init=function(){var a=this.format.getSelectionState();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.containsImage&&"image"!=a.style.shape||this.container.appendChild(this.addFill(this.createPanel()));this.container.appendChild(this.addStroke(this.createPanel()));this.container.appendChild(this.addLineJumps(this.createPanel()));
@@ -2832,18 +2835,18 @@ c));c!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyl
 "curved"==g.value&&(d=[null,"1"]);for(var e=0;e<c.length;e++)f.setCellStyles(c[e],d[e],f.getSelectionCells());b.fireEvent(new mxEventObject("styleChanged","keys",c,"values",d,"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(g,"click",function(a){mxEvent.consume(a)});var p="image"==e.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR,k="image"==e.style.shape?mxResources.get("border"):mxResources.get("line"),k=this.createCellColorOption(k,
 p,"#000000");k.appendChild(g);h.appendChild(k);var n=h.cloneNode(!1);n.style.fontWeight="normal";n.style.whiteSpace="nowrap";n.style.position="relative";n.style.paddingLeft="16px";n.style.marginBottom="2px";n.style.marginTop="2px";n.className="geToolbarContainer";var u=mxUtils.bind(this,function(a,b,c,d,e){a=this.editorUi.menus.styleChange(a,"",d,e,"geIcon",null);d=document.createElement("div");d.style.width=b+"px";d.style.height="1px";d.style.borderBottom="1px "+c+" "+this.defaultStrokeColor;d.style.paddingTop=
 "6px";a.firstChild.firstChild.style.padding="0px 4px 0px 4px";a.firstChild.firstChild.style.width=b+"px";a.firstChild.firstChild.appendChild(d);return a}),l=this.editorUi.toolbar.addMenuFunctionInContainer(n,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,75,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));u(a,75,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",
-null]).setAttribute("title",mxResources.get("dashed"));u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),q=n.cloneNode(!1),
-r=this.editorUi.toolbar.addMenuFunctionInContainer(q,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",null,!0).setAttribute("title",mxResources.get("line"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],
+null]).setAttribute("title",mxResources.get("dashed"));u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),r=n.cloneNode(!1),
+q=this.editorUi.toolbar.addMenuFunctionInContainer(r,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",null,!0).setAttribute("title",mxResources.get("line"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],
 ["link",null,null,null],"geIcon geSprite geSprite-linkedge",null,!0).setAttribute("title",mxResources.get("link"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["flexArrow",null,null,null],"geIcon geSprite geSprite-arrow",null,!0).setAttribute("title",mxResources.get("arrow"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,
-null],"geIcon geSprite geSprite-simplearrow",null,!0).setAttribute("title",mxResources.get("simpleArrow"))})),m=this.editorUi.toolbar.addMenuFunctionInContainer(q,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,33,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));u(a,33,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));
+null],"geIcon geSprite geSprite-simplearrow",null,!0).setAttribute("title",mxResources.get("simpleArrow"))})),m=this.editorUi.toolbar.addMenuFunctionInContainer(r,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,33,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));u(a,33,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));
 u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),k=n.cloneNode(!1),t=document.createElement("input");t.style.textAlign="right";
-t.style.marginTop="2px";t.style.width="41px";t.setAttribute("title",mxResources.get("linewidth"));n.appendChild(t);var w=t.cloneNode(!0);q.appendChild(w);var v=this.createStepper(t,c,1,9);v.style.display=t.style.display;v.style.marginTop="2px";n.appendChild(v);var z=this.createStepper(w,d,1,9);z.style.display=w.style.display;z.style.marginTop="2px";q.appendChild(z);mxClient.IS_QUIRKS?(t.style.height="17px",w.style.height="17px"):(t.style.position="absolute",t.style.right="32px",t.style.height="15px",
+t.style.marginTop="2px";t.style.width="41px";t.setAttribute("title",mxResources.get("linewidth"));n.appendChild(t);var w=t.cloneNode(!0);r.appendChild(w);var v=this.createStepper(t,c,1,9);v.style.display=t.style.display;v.style.marginTop="2px";n.appendChild(v);var z=this.createStepper(w,d,1,9);z.style.display=w.style.display;z.style.marginTop="2px";r.appendChild(z);mxClient.IS_QUIRKS?(t.style.height="17px",w.style.height="17px"):(t.style.position="absolute",t.style.right="32px",t.style.height="15px",
 v.style.right="20px",w.style.position="absolute",w.style.right="32px",w.style.height="15px",z.style.right="20px");mxEvent.addListener(t,"blur",c);mxEvent.addListener(t,"change",c);mxEvent.addListener(w,"blur",d);mxEvent.addListener(w,"change",d);mxClient.IS_QUIRKS&&(mxUtils.br(k),mxUtils.br(k));var x=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-orthogonal",mxResources.get("waypoints"),!1,mxUtils.bind(this,function(a){"arrow"!=e.style.shape&&(this.editorUi.menus.edgeStyleChange(a,"",
 [mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",null,!0).setAttribute("title",mxResources.get("straight")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle",null,null],"geIcon geSprite geSprite-orthogonal",null,!0).setAttribute("title",mxResources.get("orthogonal")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,
 mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,
 "",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalisometric",null,!0).setAttribute("title",mxResources.get("isometric")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalisometric",null,!0).setAttribute("title",
 mxResources.get("isometric")),"connector"==e.style.shape&&this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle","1",null],"geIcon geSprite geSprite-curved",null,!0).setAttribute("title",mxResources.get("curved")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["entityRelationEdgeStyle",null,null],"geIcon geSprite geSprite-entity",null,
-!0).setAttribute("title",mxResources.get("entityRelation")))})),E=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-startclassic",mxResources.get("linestart"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||"filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML=
+!0).setAttribute("title",mxResources.get("entityRelation")))})),F=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-startclassic",mxResources.get("linestart"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||"filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML=
 '<font style="font-size:10px;">'+mxUtils.htmlEntities(mxResources.get("none"))+"</font>";"connector"==e.style.shape||"filledEdge"==e.style.shape?(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_CLASSIC,1],"geIcon geSprite geSprite-startclassic",null,!1).setAttribute("title",mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_CLASSIC_THIN,1],"geIcon geSprite geSprite-startclassicthin",
 null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_OPEN,0],"geIcon geSprite geSprite-startopen",null,!1).setAttribute("title",mxResources.get("openArrow")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_OPEN_THIN,0],"geIcon geSprite geSprite-startopenthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["openAsync",0],"geIcon geSprite geSprite-startopenasync",
 null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_BLOCK,1],"geIcon geSprite geSprite-startblock",null,!1).setAttribute("title",mxResources.get("block")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_BLOCK_THIN,1],"geIcon geSprite geSprite-startblockthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["async",1],"geIcon geSprite geSprite-startasync",
@@ -2854,7 +2857,7 @@ null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,
 "startFill"],[mxConstants.ARROW_DIAMOND_THIN,0],"geIcon geSprite geSprite-startthindiamondtrans",null,!1).setAttribute("title",mxResources.get("diamondThin")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["dash",0],"geIcon geSprite geSprite-startdash",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["cross",0],"geIcon geSprite geSprite-startcross",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,
 "startFill"],["circlePlus",0],"geIcon geSprite geSprite-startcircleplus",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["circle",1],"geIcon geSprite geSprite-startcircle",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERone",0],"geIcon geSprite geSprite-starterone",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERmandOne",0],"geIcon geSprite geSprite-starteronetoone",
 null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERmany",0],"geIcon geSprite geSprite-startermany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERoneToMany",0],"geIcon geSprite geSprite-starteronetomany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-starteroneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",
-[mxConstants.STYLE_STARTARROW,"startFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-startermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-startblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}})),D=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-endclassic",mxResources.get("lineend"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||
+[mxConstants.STYLE_STARTARROW,"startFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-startermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-startblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}})),C=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-endclassic",mxResources.get("lineend"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||
 "filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML='<font style="font-size:10px;">'+mxUtils.htmlEntities(mxResources.get("none"))+"</font>";"connector"==e.style.shape||"filledEdge"==e.style.shape?(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC,1],"geIcon geSprite geSprite-endclassic",
 null,!1).setAttribute("title",mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC_THIN,1],"geIcon geSprite geSprite-endclassicthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OPEN,0],"geIcon geSprite geSprite-endopen",null,!1).setAttribute("title",mxResources.get("openArrow")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],
 [mxConstants.ARROW_OPEN_THIN,0],"geIcon geSprite geSprite-endopenthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["openAsync",0],"geIcon geSprite geSprite-endopenasync",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK,1],"geIcon geSprite geSprite-endblock",null,!1).setAttribute("title",mxResources.get("block")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],
@@ -2865,18 +2868,18 @@ mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstant
 0],"geIcon geSprite geSprite-enddiamondtrans",null,!1).setAttribute("title",mxResources.get("diamond")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND_THIN,0],"geIcon geSprite geSprite-endthindiamondtrans",null,!1).setAttribute("title",mxResources.get("diamondThin")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["dash",0],"geIcon geSprite geSprite-enddash",null,!1),this.editorUi.menus.edgeStyleChange(a,
 "",[mxConstants.STYLE_ENDARROW,"endFill"],["cross",0],"geIcon geSprite geSprite-endcross",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circlePlus",0],"geIcon geSprite geSprite-endcircleplus",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circle",1],"geIcon geSprite geSprite-endcircle",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],"geIcon geSprite geSprite-enderone",
 null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],"geIcon geSprite geSprite-enderonetoone",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],"geIcon geSprite geSprite-endermany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],"geIcon geSprite geSprite-enderonetomany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,
-"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(r,8);this.addArrow(x);this.addArrow(E);this.addArrow(D);v=this.addArrow(l,
-9);v.className="geIcon";v.style.width="84px";z=this.addArrow(m,9);z.className="geIcon";z.style.width="22px";var F=document.createElement("div");F.style.width="85px";F.style.height="1px";F.style.borderBottom="1px solid "+this.defaultStrokeColor;F.style.marginBottom="9px";v.appendChild(F);var C=document.createElement("div");C.style.width="23px";C.style.height="1px";C.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.marginBottom="9px";z.appendChild(C);l.style.height="15px";m.style.height=
-"15px";r.style.height="15px";x.style.height="17px";E.style.marginLeft="3px";E.style.height="17px";D.style.marginLeft="3px";D.style.height="17px";a.appendChild(h);a.appendChild(q);a.appendChild(n);l=n.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend"));
+"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(q,8);this.addArrow(x);this.addArrow(F);this.addArrow(C);v=this.addArrow(l,
+9);v.className="geIcon";v.style.width="84px";z=this.addArrow(m,9);z.className="geIcon";z.style.width="22px";var E=document.createElement("div");E.style.width="85px";E.style.height="1px";E.style.borderBottom="1px solid "+this.defaultStrokeColor;E.style.marginBottom="9px";v.appendChild(E);var D=document.createElement("div");D.style.width="23px";D.style.height="1px";D.style.borderBottom="1px solid "+this.defaultStrokeColor;D.style.marginBottom="9px";z.appendChild(D);l.style.height="15px";m.style.height=
+"15px";q.style.height="15px";x.style.height="17px";F.style.marginLeft="3px";F.style.height="17px";C.style.marginLeft="3px";C.style.height="17px";a.appendChild(h);a.appendChild(r);a.appendChild(n);l=n.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend"));
 l.appendChild(m);var M,L,J=this.addUnitInput(l,"pt",74,33,function(){M.apply(this,arguments)}),G=this.addUnitInput(l,"pt",20,33,function(){L.apply(this,arguments)});mxUtils.br(l);v=document.createElement("div");v.style.height="8px";l.appendChild(v);m=m.cloneNode(!1);mxUtils.write(m,mxResources.get("linestart"));l.appendChild(m);var K,O,Q=this.addUnitInput(l,"pt",74,33,function(){K.apply(this,arguments)}),P=this.addUnitInput(l,"pt",20,33,function(){O.apply(this,arguments)});mxUtils.br(l);this.addLabel(l,
 mxResources.get("spacing"),74,50);this.addLabel(l,mxResources.get("size"),20,50);mxUtils.br(l);h=h.cloneNode(!1);h.style.fontWeight="normal";h.style.position="relative";h.style.paddingLeft="16px";h.style.marginBottom="2px";h.style.marginTop="6px";h.style.borderWidth="0px";h.style.paddingBottom="18px";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="1px";m.style.fontWeight="normal";m.style.width="120px";mxUtils.write(m,
 mxResources.get("perimeter"));h.appendChild(m);var H,B=this.addUnitInput(h,"pt",20,41,function(){H.apply(this,arguments)});e.edges.length==f.getSelectionCount()?(a.appendChild(k),mxClient.IS_QUIRKS&&(mxUtils.br(a),mxUtils.br(a)),a.appendChild(l)):e.vertices.length==f.getSelectionCount()&&(mxClient.IS_QUIRKS&&mxUtils.br(a),a.appendChild(h));var I=mxUtils.bind(this,function(a,c,d){function h(a,c,d,g){d=d.getElementsByTagName("div")[0];d.className=b.getCssClassForMarker(g,e.style.shape,a,c);"geSprite geSprite-noarrow"==
 d.className&&(d.innerHTML=mxUtils.htmlEntities(mxResources.get("none")),d.style.backgroundImage="none",d.style.verticalAlign="top",d.style.marginTop="5px",d.style.fontSize="10px",d.style.filter="none",d.style.color=this.defaultStrokeColor,d.nextSibling.style.marginTop="0px");return d}e=this.format.getSelectionState();mxUtils.getValue(e.style,p,null);if(d||document.activeElement!=t)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),t.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=
-w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?F.style.borderBottom="1px dashed "+
-this.defaultStrokeColor:F.style.borderBottom="1px dotted "+this.defaultStrokeColor:F.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.borderBottom=F.style.borderBottom;a=x.getElementsByTagName("div")[0];c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null);"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null);"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c||
-"none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal";r.getElementsByTagName("div")[0].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==f.getSelectionCount()?(q.style.display="",n.style.display="none"):(q.style.display="none",n.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),E,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,
-"endFill","1"),D,"end");"arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow");mxUtils.setOpacity(x,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(E,30),mxUtils.setOpacity(D,30)):(mxUtils.setOpacity(E,100),mxUtils.setOpacity(D,100));if(d||document.activeElement!=
+w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?E.style.borderBottom="1px dashed "+
+this.defaultStrokeColor:E.style.borderBottom="1px dotted "+this.defaultStrokeColor:E.style.borderBottom="1px solid "+this.defaultStrokeColor;D.style.borderBottom=E.style.borderBottom;a=x.getElementsByTagName("div")[0];c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null);"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null);"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c||
+"none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal";q.getElementsByTagName("div")[0].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==f.getSelectionCount()?(r.style.display="",n.style.display="none"):(r.style.display="none",n.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),F,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,
+"endFill","1"),C,"end");"arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow");mxUtils.setOpacity(x,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(F,30),mxUtils.setOpacity(C,30)):(mxUtils.setOpacity(F,100),mxUtils.setOpacity(C,100));if(d||document.activeElement!=
 P)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),P.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),Q.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=G)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),G.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING,
 0)),J.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=B)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),B.value=isNaN(a)?"":a+" pt"});O=this.installInputHandler(P,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");K=this.installInputHandler(Q,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");L=this.installInputHandler(G,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");M=this.installInputHandler(J,mxConstants.STYLE_TARGET_PERIMETER_SPACING,
 0,-999,999," pt");H=this.installInputHandler(B,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,I);this.addKeyHandler(P,I);this.addKeyHandler(Q,I);this.addKeyHandler(G,I);this.addKeyHandler(J,I);this.addKeyHandler(B,I);f.getModel().addListener(mxEvent.CHANGE,I);this.listeners.push({destroy:function(){f.getModel().removeListener(I)}});I();return a};
@@ -2903,9 +2906,9 @@ this.listener)},destroy:function(){d.removeListener(this.listener)}}))};DiagramF
 DiagramFormatPanel.prototype.addPaperSize=function(a){var c=this.editorUi,d=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var b=PageSetupDialog.addPageFormatPanel(a,"formatpanel",d.pageFormat,function(a){if(null==d.pageFormat||d.pageFormat.width!=a.width||d.pageFormat.height!=a.height)a=new ChangePageSetup(c,null,null,a),a.ignoreColor=!0,a.ignoreImage=!0,d.model.execute(a)});this.addKeyHandler(b.widthInput,function(){b.set(d.pageFormat)});this.addKeyHandler(b.heightInput,
 function(){b.set(d.pageFormat)});var f=function(){b.set(d.pageFormat)};c.addListener("pageFormatChanged",f);this.listeners.push({destroy:function(){c.removeListener(f)}});d.getModel().addListener(mxEvent.CHANGE,f);this.listeners.push({destroy:function(){d.getModel().removeListener(f)}});return a};
 DiagramFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("editData"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editData").funct()}));c.setAttribute("title",mxResources.get("editData")+" ("+this.editorUi.actions.get("editData").shortcut+")");c.style.width="202px";c.style.marginBottom="2px";a.appendChild(c);mxUtils.br(a);c=mxUtils.button(mxResources.get("clearDefaultStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("clearDefaultStyle").funct()}));
-c.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");c.style.width="202px";a.appendChild(c);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(){mxCylinder.call(this)}function c(){mxActor.call(this)}function d(){mxCylinder.call(this)}function b(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxActor.call(this)}function h(){mxCylinder.call(this)}function g(){mxActor.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function m(){mxActor.call(this)}function p(){mxActor.call(this)}function n(){mxActor.call(this)}function u(){mxActor.call(this)}function q(a,b){this.canvas=
-a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,q.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,q.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,q.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,q.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
-this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function t(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function E(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function F(){mxShape.call(this)}function C(){mxShape.call(this)}
+c.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");c.style.width="202px";a.appendChild(c);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(){mxCylinder.call(this)}function c(){mxActor.call(this)}function d(){mxCylinder.call(this)}function b(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxActor.call(this)}function h(){mxCylinder.call(this)}function g(){mxActor.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function m(){mxActor.call(this)}function p(){mxActor.call(this)}function n(){mxActor.call(this)}function u(){mxActor.call(this)}function r(a,b){this.canvas=
+a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,r.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,r.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,r.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,r.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
+this.canvas.curveTo=mxUtils.bind(this,r.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,r.prototype.arcTo)}function q(){mxRectangleShape.call(this)}function t(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function C(){mxCylinder.call(this)}function E(){mxShape.call(this)}function D(){mxShape.call(this)}
 function M(){mxEllipse.call(this)}function L(){mxShape.call(this)}function J(){mxShape.call(this)}function G(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function O(){mxShape.call(this)}function Q(){mxShape.call(this)}function P(){mxShape.call(this)}function H(){mxShape.call(this)}function B(){mxCylinder.call(this)}function I(){mxDoubleEllipse.call(this)}function A(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function U(){mxArrowConnector.call(this);
 this.spacing=0}function X(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function aa(){mxActor.call(this)}function ka(){mxActor.call(this)}function ba(){mxActor.call(this)}function R(){mxActor.call(this)}function la(){mxActor.call(this)}function ca(){mxActor.call(this)}function fa(){mxActor.call(this)}function ga(){mxActor.call(this)}function Y(){mxActor.call(this)}function Z(){mxActor.call(this)}function ea(){mxEllipse.call(this)}function ja(){mxEllipse.call(this)}function W(){mxEllipse.call(this)}
 function ma(){mxRhombus.call(this)}function S(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Ca(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function ta(){mxActor.call(this)}function pa(){mxActor.call(this)}function qa(){mxActor.call(this)}function na(){mxConnector.call(this)}function Fa(a,b,c,d,e,g,f,h,k,l){f+=k;var y=d.clone();d.x-=e*(2*f+k);d.y-=g*(2*f+k);e*=f+k;g*=f+k;return function(){a.ellipse(y.x-e-f,y.y-g-f,2*f,2*f);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,
@@ -2925,33 +2928,33 @@ Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(
 function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*b),0,0)}return null};mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.isRoundable=function(){return!0};m.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
 2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d-b,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("parallelogram",m);mxUtils.extend(p,mxActor);p.prototype.size=.2;p.prototype.isRoundable=function(){return!0};p.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,
 e),new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("trapezoid",p);mxUtils.extend(n,mxActor);n.prototype.size=.5;n.prototype.redrawPath=function(a,b,c,d,e){a.setFillColor(null);b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(b,0),new mxPoint(b,e/2),new mxPoint(0,e/2),new mxPoint(b,
-e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",n);mxUtils.extend(u,mxActor);u.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",u);q.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
-b;this.firstX=a;this.firstY=b};q.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};q.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};q.prototype.curveTo=function(a,b,c,d,e,g){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};q.prototype.arcTo=function(a,b,c,d,
-e,g,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=f};q.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),g=Math.sqrt(d*d+e*e);if(2>g){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var f=Math.round(g/10),y=this.defaultVariation;5>f&&(f=5,y/=3);for(var h=c(a-this.lastX)*d/f,c=c(b-this.lastY)*e/f,
-d=d/g,e=e/g,g=0;g<f;g++){var k=(Math.random()-.5)*y;this.originalLineTo.call(this.canvas,h*g+this.lastX-k*e,c*g+this.lastY-k*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};q.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};
-var Ka=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new q(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ka.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var La=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==
+e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",n);mxUtils.extend(u,mxActor);u.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",u);r.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
+b;this.firstX=a;this.firstY=b};r.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)};r.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};r.prototype.curveTo=function(a,b,c,d,e,g){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};r.prototype.arcTo=function(a,b,c,d,
+e,g,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=f};r.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),g=Math.sqrt(d*d+e*e);if(2>g){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var f=Math.round(g/10),y=this.defaultVariation;5>f&&(f=5,y/=3);for(var h=c(a-this.lastX)*d/f,c=c(b-this.lastY)*e/f,
+d=d/g,e=e/g,g=0;g<f;g++){var k=(Math.random()-.5)*y;this.originalLineTo.call(this.canvas,h*g+this.lastX-k*e,c*g+this.lastY-k*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};r.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};
+var Ka=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new r(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ka.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var La=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==
 this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&La.apply(this,arguments)};var Ma=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle)Ma.apply(this,arguments);else{var g=!0;null!=this.style&&(g="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(g||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)g||null!=this.fill&&this.fill!=mxConstants.NONE||
 (a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?g=Math.min(d/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.min(d*g,e*g)),a.moveTo(b+g,c),a.lineTo(b+d-g,c),a.quadTo(b+d,c,b+d,c+g),a.lineTo(b+d,c+e-g),a.quadTo(b+d,c+e,b+d-g,c+e),a.lineTo(b+g,c+e),a.quadTo(b,c+e,b,c+e-g),
-a.lineTo(b,c+g),a.quadTo(b,c,b+g,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var Na=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&Na.apply(this,arguments)};mxUtils.extend(r,mxRectangleShape);r.prototype.size=.1;r.prototype.isHtmlAllowed=function(){return!1};r.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,
-!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};r.prototype.paintForeground=
-function(a,b,c,d,e){var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*f,e*f));g=Math.round(g);a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.moveTo(b+d-g,c);a.lineTo(b+d-g,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",r);mxUtils.extend(t,
+a.lineTo(b,c+g),a.quadTo(b,c,b+g,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var Na=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&Na.apply(this,arguments)};mxUtils.extend(q,mxRectangleShape);q.prototype.size=.1;q.prototype.isHtmlAllowed=function(){return!1};q.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,
+!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};q.prototype.paintForeground=
+function(a,b,c,d,e){var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*f,e*f));g=Math.round(g);a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.moveTo(b+d-g,c);a.lineTo(b+d-g,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",q);mxUtils.extend(t,
 mxRectangleShape);t.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};t.prototype.paintForeground=function(a,b,c,d,e){};mxCellRenderer.registerShape("transparent",t);mxUtils.extend(w,mxHexagon);w.prototype.size=30;w.prototype.position=.5;w.prototype.position2=.5;w.prototype.base=20;w.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};w.prototype.isRoundable=
 function(){return!0};w.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),h=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base))));
 this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,g+h),e-c),new mxPoint(f,e),new mxPoint(Math.max(0,g),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",w);mxUtils.extend(v,mxActor);v.prototype.size=.2;v.prototype.fixedSize=20;v.prototype.isRoundable=function(){return!0};v.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,
 "size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",v);mxUtils.extend(z,mxHexagon);z.prototype.size=.25;z.prototype.isRoundable=function(){return!0};z.prototype.redrawPath=
 function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",z);mxUtils.extend(x,mxRectangleShape);x.prototype.isHtmlAllowed=function(){return!1};x.prototype.paintForeground=function(a,
 b,c,d,e){var g=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+g);a.lineTo(b+d/2,c+e-g);a.moveTo(b+g,c+e/2);a.lineTo(b+d-g,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",x);var Ga=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
-b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ga.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&(a.setShadow(!1),Ga.apply(this,[a,b,c,d,e]))}};mxUtils.extend(E,mxRectangleShape);E.prototype.isHtmlAllowed=function(){return!1};E.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,
-this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};E.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+
+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ga.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&(a.setShadow(!1),Ga.apply(this,[a,b,c,d,e]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,
+this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};F.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+
 g]];if(null!=f){var h=this.style["symbol"+g+"Align"],y=this.style["symbol"+g+"VerticalAlign"],k=this.style["symbol"+g+"Width"],l=this.style["symbol"+g+"Height"],va=this.style["symbol"+g+"Spacing"]||0,Da=this.style["symbol"+g+"VSpacing"]||va,da=this.style["symbol"+g+"ArcSpacing"];null!=da&&(da*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),va+=da,Da+=da);var da=b,m=c,da=h==mxConstants.ALIGN_CENTER?da+(d-k)/2:h==mxConstants.ALIGN_RIGHT?da+(d-k-va):da+va,m=y==mxConstants.ALIGN_MIDDLE?m+(e-l)/
-2:y==mxConstants.ALIGN_BOTTOM?m+(e-l-Da):m+Da;a.save();h=new f;h.style=this.style;f.prototype.paintVertexShape.call(h,a,da,m,k,l);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",E);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,b,c,d,e,g){g?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",
-D);mxUtils.extend(F,mxShape);F.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",F);mxUtils.extend(C,mxShape);C.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};C.prototype.paintBackground=
-function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",C);mxUtils.extend(M,mxEllipse);M.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",
+2:y==mxConstants.ALIGN_BOTTOM?m+(e-l-Da):m+Da;a.save();h=new f;h.style=this.style;f.prototype.paintVertexShape.call(h,a,da,m,k,l);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",F);mxUtils.extend(C,mxCylinder);C.prototype.redrawPath=function(a,b,c,d,e,g){g?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",
+C);mxUtils.extend(E,mxShape);E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",E);mxUtils.extend(D,mxShape);D.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};D.prototype.paintBackground=
+function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",D);mxUtils.extend(M,mxEllipse);M.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",
 M);mxUtils.extend(L,mxShape);L.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",L);mxUtils.extend(J,mxShape);J.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};J.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,
 e/8,d,7*e/8);a.fillAndStroke()};J.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(G,mxRectangleShape);G.prototype.size=40;G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};G.prototype.paintBackground=
 function(a,b,c,d,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,g):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=G&&(f=new f,f.apply(this.state),a.save(),f.paintVertexShape(a,b,c,d,g),a.restore()));g<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+g),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};G.prototype.paintForeground=
 function(a,b,c,d,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,g))};mxCellRenderer.registerShape("umlLifeline",G);mxUtils.extend(K,mxShape);K.prototype.width=60;K.prototype.height=30;K.prototype.corner=10;K.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,
-"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var g=this.corner,f=Math.min(d,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(a.setFillColor(y),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
+"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var g=this.corner,f=Math.min(d,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
 mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+f,c);a.lineTo(b+f,c+Math.max(0,h-1.5*g));a.lineTo(b+Math.max(0,f-g),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+f,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",K);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=G.prototype.size;
 null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);
 mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)),
@@ -3015,7 +3018,7 @@ parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYL
 b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ia(a,c/2))}return b},
 label:sa(),ext:sa(),rectangle:sa(),triangle:sa(),rhombus:sa(),umlLifeline:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",G.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[N(a,["width","height"],function(a){var b=Math.max(K.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,
 "width",K.prototype.width))),c=Math.max(1.5*K.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",K.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(K.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*K.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[N(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,
-"size",r.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},cross:function(a){return[N(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",pa.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,
+"size",q.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},cross:function(a){return[N(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",pa.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,
 a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=
 [N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},dataStorage:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size))));
 return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},callout:function(a){var b=[N(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position)));mxUtils.getValue(this.state.style,"base",w.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height-
@@ -3050,7 +3053,7 @@ f.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math
 ja.prototype.constraints=mxEllipse.prototype.constraints;W.prototype.constraints=mxEllipse.prototype.constraints;ua.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;qa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,
 .5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};Y.prototype.constraints=
 mxRectangleShape.prototype.constraints;Z.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)];F.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,
+.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)];E.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)];B.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)];e.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,
@@ -3080,7 +3083,7 @@ this.addAction("open...",function(){window.openNew=!0;window.openKey="open";c.op
 320,220,!0,!0,function(){window.openFile=null})}).isEnabled=f;this.addAction("save",function(){c.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=f;this.addAction("saveAs...",function(){c.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=f;this.addAction("export...",function(){c.showDialog((new ExportDialog(c)).container,300,230,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(c);c.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...",
 function(){c.showDialog((new PageSetupDialog(c)).container,320,220,!0,!0)}).isEnabled=f;this.addAction("print...",function(){c.showDialog((new PrintDialog(c)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(b,null,10,10)});this.addAction("undo",function(){c.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){c.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",
 function(){mxClipboard.cut(b)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(b)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&mxClipboard.paste(b)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){b.getModel().beginUpdate();try{var c=mxClipboard.paste(b);if(null!=c){a=!0;for(var d=0;d<c.length&&
-a;d++)a=a&&b.model.isEdge(c[d]);var e=b.view.translate,g=b.view.scale,f=e.x,h=e.y,e=null;if(1==c.length&&a){var q=b.getCellGeometry(c[0]);null!=q&&(e=q.getTerminalPoint(!0))}e=null!=e?e:b.getBoundingBoxFromGeometry(c,a);if(null!=e){var r=Math.round(b.snap(b.popupMenuHandler.triggerX/g-f)),t=Math.round(b.snap(b.popupMenuHandler.triggerY/g-h));b.cellsMoved(c,r-e.x,t-e.y)}}}finally{b.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=b.getSelectionCell();b.isEnabled()&&null!=a&&b.getModel().isVertex(a)&&
+a;d++)a=a&&b.model.isEdge(c[d]);var e=b.view.translate,g=b.view.scale,f=e.x,h=e.y,e=null;if(1==c.length&&a){var r=b.getCellGeometry(c[0]);null!=r&&(e=r.getTerminalPoint(!0))}e=null!=e?e:b.getBoundingBoxFromGeometry(c,a);if(null!=e){var q=Math.round(b.snap(b.popupMenuHandler.triggerX/g-f)),t=Math.round(b.snap(b.popupMenuHandler.triggerY/g-h));b.cellsMoved(c,q-e.x,t-e.y)}}}finally{b.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=b.getSelectionCell();b.isEnabled()&&null!=a&&b.getModel().isVertex(a)&&
 (a=b.getCellGeometry(a),null!=a&&(c.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(b.isEnabled()&&!b.isSelectionEmpty()&&null!=c.copiedSize){b.getModel().beginUpdate();try{var d=b.getSelectionCells();for(a=0;a<d.length;a++)if(b.getModel().isVertex(d[a])){var e=b.getCellGeometry(d[a]);null!=e&&(e=e.clone(),e.width=c.copiedSize.width,e.height=c.copiedSize.height,b.getModel().setGeometry(d[a],e))}}finally{b.getModel().endUpdate()}}},
 null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){b.setSelectionCells(b.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){b.turnShapes(b.getSelectionCells())},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices",
 function(){b.selectVertices()},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){b.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){b.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){b.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!b.isSelectionEmpty()){b.getModel().beginUpdate();try{var a=b.isCellMovable(b.getSelectionCell())?1:0;b.toggleCellStyles(mxConstants.STYLE_MOVABLE,
@@ -3151,7 +3154,7 @@ Menus.prototype.put=function(a,c){return this.menus[a]=c};Menus.prototype.get=fu
 Menus.prototype.addInsertTableItem=function(a){function c(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}var d=this.editorUi.editor.graph;a=a.addItem("",null,mxUtils.bind(this,function(a){var b=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=b&&null!=d.cellEditor.textarea){var e=d.getParentByName(b,"TR"),f=d.cellEditor.textarea.getElementsByTagName("table");a=[];for(var h=0;h<f.length;h++)a.push(f[h]);
 d.container.focus();d.pasteHtmlAtCaret(c(e.sectionRowIndex+1,b.cellIndex+1));b=d.cellEditor.textarea.getElementsByTagName("table");if(b.length==a.length+1)for(h=b.length-1;0<=h;h--)if(0==h||b[h]!=a[h-1]){d.selectNode(b[h].rows[0].cells[0]);break}}}));var b='<img src="'+mxClient.imageBasePath+'/transparent.gif" width="16" height="16"/>';a.firstChild.innerHTML="";var f=function(a,c){var d=document.createElement("table");d.setAttribute("border","1");d.style.borderCollapse="collapse";mxClient.IS_QUIRKS||
 d.setAttribute("cellPadding","8");for(var e=0;e<a;e++)for(var g=d.insertRow(e),f=0;f<c;f++){var h=g.insertCell(-1);mxClient.IS_QUIRKS&&(h.innerHTML=b)}return d}(5,5);a.firstChild.appendChild(f);var e=document.createElement("div");e.style.padding="4px";e.style.fontSize=Menus.prototype.defaultFontSize+"px";e.innerHTML="1x1";a.firstChild.appendChild(e);mxEvent.addListener(f,"mouseover",function(a){var c=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=c){for(var h=d.getParentByName(c,"TR"),l=Math.min(20,
-h.sectionRowIndex+2),m=Math.min(20,c.cellIndex+2),p=f.rows.length;p<l;p++)for(var n=f.insertRow(p),u=0;u<f.rows[0].cells.length;u++){var q=n.insertCell(-1);mxClient.IS_QUIRKS&&(q.innerHTML=b)}for(p=0;p<f.rows.length;p++)for(n=f.rows[p],u=n.cells.length;u<m;u++)q=n.insertCell(-1),mxClient.IS_QUIRKS&&(q.innerHTML=b);e.innerHTML=c.cellIndex+1+"x"+(h.sectionRowIndex+1);for(l=0;l<f.rows.length;l++)for(m=f.rows[l],p=0;p<m.cells.length;p++)m.cells[p].style.backgroundColor=l<=h.sectionRowIndex&&p<=c.cellIndex?
+h.sectionRowIndex+2),m=Math.min(20,c.cellIndex+2),p=f.rows.length;p<l;p++)for(var n=f.insertRow(p),u=0;u<f.rows[0].cells.length;u++){var r=n.insertCell(-1);mxClient.IS_QUIRKS&&(r.innerHTML=b)}for(p=0;p<f.rows.length;p++)for(n=f.rows[p],u=n.cells.length;u<m;u++)r=n.insertCell(-1),mxClient.IS_QUIRKS&&(r.innerHTML=b);e.innerHTML=c.cellIndex+1+"x"+(h.sectionRowIndex+1);for(l=0;l<f.rows.length;l++)for(m=f.rows[l],p=0;p<m.cells.length;p++)m.cells[p].style.backgroundColor=l<=h.sectionRowIndex&&p<=c.cellIndex?
 "blue":"white";mxEvent.consume(a)}})};
 Menus.prototype.edgeStyleChange=function(a,c,d,b,f,e,h){return a.addItem(c,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;a.stopEditing(!1);a.getModel().beginUpdate();try{for(var c=a.getSelectionCells(),e=[],f=0;f<c.length;f++){var p=c[f];if(a.getModel().isEdge(p)){if(h){var n=a.getCellGeometry(p);null!=n&&(n=n.clone(),n.points=null,a.getModel().setGeometry(p,n))}for(var u=0;u<d.length;u++)a.setCellStyles(d[u],b[u],[p]);e.push(p)}}this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",
 d,"values",b,"cells",e))}finally{a.getModel().endUpdate()}}),e,f)};Menus.prototype.styleChange=function(a,c,d,b,f,e,h,g){var k=this.createStyleChangeFunction(d,b);return a.addItem(c,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;null!=h&&a.cellEditor.isContentEditing()?h():k(g)}),e,f)};
@@ -3218,8 +3221,8 @@ Toolbar.prototype.createLabel=function(a,c){var d=document.createElement("a");d.
 Toolbar.prototype.addMenuHandler=function(a,c,d,b){if(null!=d){var f=this.editorUi.editor.graph,e=null,h=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(g){if(h&&(null==a.enabled||a.enabled)){f.popupMenuHandler.hideMenu();e=new mxPopupMenu(d);e.div.className+=" geToolbarMenu";e.showDisabled=b;e.labels=c;e.autoExpand=!0;var k=mxUtils.getOffset(a);e.popup(k.x,k.y+a.offsetHeight,null,g);this.editorUi.setCurrentMenu(e,a);!c&&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()});e.addListener(mxEvent.EVENT_HIDE,mxUtils.bind(this,function(){this.currentElt=null}))}h=!0;mxEvent.consume(g)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){h=this.currentElt!=a;b.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";var c=mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)?20:0;a.setAttribute("width",(Editor.useLocalStorage?640:320)+c+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+c+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=
-function(a,c,d,b){function f(){var a=e(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);a.style.marginBottom="8px";return a}function e(a,b,c,d){b=null!=b?b:12;var e=document.createElement("table");e.style.borderCollapse="collapse";e.setAttribute("cellspacing","0");e.style.marginBottom="20px";e.style.cellSpacing="0px";var k=document.createElement("tbody");e.appendChild(k);for(var m=a.length/b,n=0;n<m;n++){for(var p=document.createElement("tr"),q=0;q<b;q++)(function(a){var b=
-document.createElement("td");b.style.border="1px solid black";b.style.padding="0px";b.style.width="16px";b.style.height="16px";null==a&&(a=c);"none"==a?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor="#"+a;p.appendChild(b);null!=a&&(b.style.cursor="pointer",mxEvent.addListener(b,"click",function(){"none"==a?(g.fromString("ffffff"),h.value="none"):g.fromString(a)}))})(a[n*b+q]);k.appendChild(p)}d&&(a=document.createElement("td"),a.setAttribute("title",mxResources.get("reset")),
+function(a,c,d,b){function f(){var a=e(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);a.style.marginBottom="8px";return a}function e(a,b,c,d){b=null!=b?b:12;var e=document.createElement("table");e.style.borderCollapse="collapse";e.setAttribute("cellspacing","0");e.style.marginBottom="20px";e.style.cellSpacing="0px";var k=document.createElement("tbody");e.appendChild(k);for(var m=a.length/b,n=0;n<m;n++){for(var p=document.createElement("tr"),u=0;u<b;u++)(function(a){var b=
+document.createElement("td");b.style.border="1px solid black";b.style.padding="0px";b.style.width="16px";b.style.height="16px";null==a&&(a=c);"none"==a?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor="#"+a;p.appendChild(b);null!=a&&(b.style.cursor="pointer",mxEvent.addListener(b,"click",function(){"none"==a?(g.fromString("ffffff"),h.value="none"):g.fromString(a)}))})(a[n*b+u]);k.appendChild(p)}d&&(a=document.createElement("td"),a.setAttribute("title",mxResources.get("reset")),
 a.style.border="1px solid black",a.style.padding="0px",a.style.width="16px",a.style.height="16px",a.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.cursor="pointer",p.appendChild(a),mxEvent.addListener(a,"click",function(){ColorDialog.resetRecentColors();e.parentNode.replaceChild(f(),e)}));l.appendChild(e);return e}this.editorUi=a;var h=document.createElement("input");h.style.marginBottom="10px";
 h.style.width="216px";mxClient.IS_IE&&(h.style.marginTop="10px",document.body.appendChild(h));this.init=function(){mxClient.IS_TOUCH||h.focus()};var g=new jscolor.color(h);g.pickerOnfocus=!1;g.showPicker();var k=document.createElement("div");jscolor.picker.box.style.position="relative";jscolor.picker.box.style.width="230px";jscolor.picker.box.style.height="100px";jscolor.picker.box.style.paddingBottom="10px";k.appendChild(jscolor.picker.box);var l=document.createElement("center");k.appendChild(h);
 mxUtils.br(k);f();var m=e(this.presetColors);m.style.marginBottom="8px";m=e(this.defaultColors);m.style.marginBottom="16px";k.appendChild(l);m=document.createElement("div");m.style.textAlign="right";m.style.whiteSpace="nowrap";var p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=b&&b()});p.className="geBtn";a.editor.cancelFirst&&m.appendChild(p);var n=null!=d?d:this.createApplyFunction();d=mxUtils.button(mxResources.get("apply"),function(){var b=h.value;ColorDialog.addRecentColor(b,
@@ -3229,43 +3232,43 @@ ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,fu
 ColorDialog.addRecentColor=function(a,c){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=c&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
 var AboutDialog=function(a){var c=document.createElement("div");c.setAttribute("align","center");var d=document.createElement("h3");mxUtils.write(d,mxResources.get("about")+" GraphEditor");c.appendChild(d);d=document.createElement("img");d.style.border="0px";d.setAttribute("width","176");d.setAttribute("width","151");d.setAttribute("src",IMAGE_PATH+"/logo.png");c.appendChild(d);mxUtils.br(c);mxUtils.write(c,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(c);d=document.createElement("a");d.setAttribute("href",
 "http://www.jgraph.com/");d.setAttribute("target","_blank");mxUtils.write(d,"www.jgraph.com");c.appendChild(d);mxUtils.br(c);mxUtils.br(c);d=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});d.className="geBtn gePrimaryBtn";c.appendChild(d);this.container=c},FilenameDialog=function(a,c,d,b,f,e,h,g,k,l){k=null!=k?k:!0;var m,p,n=document.createElement("table"),u=document.createElement("tbody");n.style.marginTop="8px";m=document.createElement("tr");p=document.createElement("td");p.style.whiteSpace=
-"nowrap";p.style.fontSize="10pt";p.style.width="120px";mxUtils.write(p,(f||mxResources.get("filename"))+":");m.appendChild(p);var q=document.createElement("input");q.setAttribute("value",c||"");q.style.marginLeft="4px";q.style.width="180px";var r=mxUtils.button(d,function(){if(null==e||e(q.value))k&&a.hideDialog(),b(q.value)});r.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==h)if(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():
-document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=n.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=q,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&
-(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(q.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),r.click());a.stopPropagation();a.preventDefault()}))}}};p=document.createElement("td");p.appendChild(q);m.appendChild(p);null==f&&null!=h||u.appendChild(m);null!=h&&(m=document.createElement("tr"),p=document.createElement("td"),p.colSpan=2,p.appendChild(h),m.appendChild(p),u.appendChild(m));m=document.createElement("tr");p=document.createElement("td");
-p.colSpan=2;p.style.paddingTop="20px";p.style.whiteSpace="nowrap";p.setAttribute("align","right");c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});c.className="geBtn";a.editor.cancelFirst&&p.appendChild(c);null!=g&&(d=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),d.className="geBtn",p.appendChild(d));mxEvent.addListener(q,"keypress",function(a){13==a.keyCode&&r.click()});p.appendChild(r);a.editor.cancelFirst||p.appendChild(c);m.appendChild(p);
-u.appendChild(m);n.appendChild(u);this.container=n},TextareaDialog=function(a,c,d,b,f,e,h,g,k,l,m,p){h=null!=h?h:300;g=null!=g?g:120;l=null!=l?l:!1;var n,u,q=document.createElement("table"),r=document.createElement("tbody");n=document.createElement("tr");u=document.createElement("td");u.style.fontSize="10pt";u.style.width="100px";mxUtils.write(u,c);n.appendChild(u);r.appendChild(n);n=document.createElement("tr");u=document.createElement("td");var t=document.createElement("textarea");m&&t.setAttribute("wrap",
-"off");t.setAttribute("spellcheck","false");t.setAttribute("autocorrect","off");t.setAttribute("autocomplete","off");t.setAttribute("autocapitalize","off");mxUtils.write(t,d||"");t.style.resize="none";t.style.width=h+"px";t.style.height=g+"px";this.textarea=t;this.init=function(){t.focus();t.scrollTop=0};u.appendChild(t);n.appendChild(u);r.appendChild(n);n=document.createElement("tr");u=document.createElement("td");u.style.paddingTop="14px";u.style.whiteSpace="nowrap";u.setAttribute("align","right");
-c=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});c.className="geBtn";a.editor.cancelFirst&&u.appendChild(c);null!=k&&k(u,t);null!=b&&(k=mxUtils.button(p||mxResources.get("apply"),function(){l||a.hideDialog();b(t.value)}),k.className="geBtn gePrimaryBtn",u.appendChild(k));a.editor.cancelFirst||u.appendChild(c);n.appendChild(u);r.appendChild(n);q.appendChild(r);this.container=q},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign=
+"nowrap";p.style.fontSize="10pt";p.style.width="120px";mxUtils.write(p,(f||mxResources.get("filename"))+":");m.appendChild(p);var r=document.createElement("input");r.setAttribute("value",c||"");r.style.marginLeft="4px";r.style.width="180px";var q=mxUtils.button(d,function(){if(null==e||e(r.value))k&&a.hideDialog(),b(r.value)});q.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==h)if(r.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?r.select():
+document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=n.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=r,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&
+(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(r.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),q.click());a.stopPropagation();a.preventDefault()}))}}};p=document.createElement("td");p.appendChild(r);m.appendChild(p);null==f&&null!=h||u.appendChild(m);null!=h&&(m=document.createElement("tr"),p=document.createElement("td"),p.colSpan=2,p.appendChild(h),m.appendChild(p),u.appendChild(m));m=document.createElement("tr");p=document.createElement("td");
+p.colSpan=2;p.style.paddingTop="20px";p.style.whiteSpace="nowrap";p.setAttribute("align","right");c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});c.className="geBtn";a.editor.cancelFirst&&p.appendChild(c);null!=g&&(d=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),d.className="geBtn",p.appendChild(d));mxEvent.addListener(r,"keypress",function(a){13==a.keyCode&&q.click()});p.appendChild(q);a.editor.cancelFirst||p.appendChild(c);m.appendChild(p);
+u.appendChild(m);n.appendChild(u);this.container=n},TextareaDialog=function(a,c,d,b,f,e,h,g,k,l,m,p){h=null!=h?h:300;g=null!=g?g:120;l=null!=l?l:!1;var n,u,r=document.createElement("table"),q=document.createElement("tbody");n=document.createElement("tr");u=document.createElement("td");u.style.fontSize="10pt";u.style.width="100px";mxUtils.write(u,c);n.appendChild(u);q.appendChild(n);n=document.createElement("tr");u=document.createElement("td");var t=document.createElement("textarea");m&&t.setAttribute("wrap",
+"off");t.setAttribute("spellcheck","false");t.setAttribute("autocorrect","off");t.setAttribute("autocomplete","off");t.setAttribute("autocapitalize","off");mxUtils.write(t,d||"");t.style.resize="none";t.style.width=h+"px";t.style.height=g+"px";this.textarea=t;this.init=function(){t.focus();t.scrollTop=0};u.appendChild(t);n.appendChild(u);q.appendChild(n);n=document.createElement("tr");u=document.createElement("td");u.style.paddingTop="14px";u.style.whiteSpace="nowrap";u.setAttribute("align","right");
+c=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});c.className="geBtn";a.editor.cancelFirst&&u.appendChild(c);null!=k&&k(u,t);null!=b&&(k=mxUtils.button(p||mxResources.get("apply"),function(){l||a.hideDialog();b(t.value)}),k.className="geBtn gePrimaryBtn",u.appendChild(k));a.editor.cancelFirst||u.appendChild(c);n.appendChild(u);q.appendChild(n);r.appendChild(q);this.container=r},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign=
 "right";var d=document.createElement("textarea");d.setAttribute("wrap","off");d.setAttribute("spellcheck","false");d.setAttribute("autocorrect","off");d.setAttribute("autocomplete","off");d.setAttribute("autocapitalize","off");d.style.overflow="auto";d.style.resize="none";d.style.width="600px";d.style.height="360px";d.style.marginBottom="16px";d.value=mxUtils.getPrettyXml(a.editor.getGraphXml());c.appendChild(d);this.init=function(){d.focus()};Graph.fileSupport&&(d.addEventListener("dragover",function(a){a.stopPropagation();
 a.preventDefault()},!1),d.addEventListener("drop",function(b){b.stopPropagation();b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var c=new FileReader;c.onload=function(a){d.value=a.target.result};c.readAsText(b)}else d.value=a.extractGraphModelFromEvent(b)},!1));var b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.className="geBtn";a.editor.cancelFirst&&c.appendChild(b);var f=document.createElement("select");f.style.width="180px";f.className=
 "geBtn";if(a.editor.graph.isEnabled()){var e=document.createElement("option");e.setAttribute("value","replace");mxUtils.write(e,mxResources.get("replaceExistingDrawing"));f.appendChild(e)}e=document.createElement("option");e.setAttribute("value","new");mxUtils.write(e,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&f.appendChild(e);a.editor.graph.isEnabled()&&(e=document.createElement("option"),e.setAttribute("value","import"),mxUtils.write(e,mxResources.get("addToExistingDrawing")),
 f.appendChild(e));c.appendChild(f);e=mxUtils.button(mxResources.get("ok"),function(){var b=a.editor.graph.zapGremlins(mxUtils.trim(d.value)),c=null;if("new"==f.value)a.hideDialog(),a.editor.editAsNew(b);else if("replace"==f.value){a.editor.graph.model.beginUpdate();try{a.editor.setGraphXml(mxUtils.parseXml(b).documentElement),a.hideDialog()}catch(p){c=p}finally{a.editor.graph.model.endUpdate()}}else if("import"==f.value){a.editor.graph.model.beginUpdate();try{var e=mxUtils.parseXml(b),l=new mxGraphModel;
 (new mxCodec(e)).decode(e.documentElement,l);var m=l.getChildren(l.getChildAt(l.getRoot(),0));a.editor.graph.setSelectionCells(a.editor.graph.importCells(m));a.hideDialog()}catch(p){c=p}finally{a.editor.graph.model.endUpdate()}}null!=c&&mxUtils.alert(c.message)});e.className="geBtn gePrimaryBtn";c.appendChild(e);a.editor.cancelFirst||c.appendChild(b);this.container=c};EditDiagramDialog.showNewWindowOption=!0;
-var ExportDialog=function(a){function c(){var a=m.value,b=a.lastIndexOf(".");m.value=0<b?a.substring(0,b+1)+p.value:a+"."+p.value;"xml"===p.value?(n.setAttribute("disabled","true"),u.setAttribute("disabled","true"),q.setAttribute("disabled","true"),t.setAttribute("disabled","true")):(n.removeAttribute("disabled"),u.removeAttribute("disabled"),q.removeAttribute("disabled"),t.removeAttribute("disabled"));"png"===p.value||"svg"===p.value?r.removeAttribute("disabled"):r.setAttribute("disabled","disabled")}
-function d(){u.style.backgroundColor=u.value*q.value>MAX_AREA||0>=u.value?"red":"";q.style.backgroundColor=u.value*q.value>MAX_AREA||0>=q.value?"red":""}var b=a.editor.graph,f=b.getGraphBounds(),e=b.view.scale,h=Math.ceil(f.width/e),g=Math.ceil(f.height/e),k,e=document.createElement("table"),l=document.createElement("tbody");e.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";k.style.width="100px";mxUtils.write(k,
+var ExportDialog=function(a){function c(){var a=m.value,b=a.lastIndexOf(".");m.value=0<b?a.substring(0,b+1)+p.value:a+"."+p.value;"xml"===p.value?(n.setAttribute("disabled","true"),u.setAttribute("disabled","true"),r.setAttribute("disabled","true"),t.setAttribute("disabled","true")):(n.removeAttribute("disabled"),u.removeAttribute("disabled"),r.removeAttribute("disabled"),t.removeAttribute("disabled"));"png"===p.value||"svg"===p.value?q.removeAttribute("disabled"):q.setAttribute("disabled","disabled")}
+function d(){u.style.backgroundColor=u.value*r.value>MAX_AREA||0>=u.value?"red":"";r.style.backgroundColor=u.value*r.value>MAX_AREA||0>=r.value?"red":""}var b=a.editor.graph,f=b.getGraphBounds(),e=b.view.scale,h=Math.ceil(f.width/e),g=Math.ceil(f.height/e),k,e=document.createElement("table"),l=document.createElement("tbody");e.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";k.style.width="100px";mxUtils.write(k,
 mxResources.get("filename")+":");f.appendChild(k);var m=document.createElement("input");m.setAttribute("value",a.editor.getOrCreateFilename());m.style.width="180px";k=document.createElement("td");k.appendChild(m);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("format")+":");f.appendChild(k);var p=document.createElement("select");p.style.width="180px";k=document.createElement("option");k.setAttribute("value",
 "png");mxUtils.write(k,mxResources.get("formatPng"));p.appendChild(k);k=document.createElement("option");ExportDialog.showGifOption&&(k.setAttribute("value","gif"),mxUtils.write(k,mxResources.get("formatGif")),p.appendChild(k));k=document.createElement("option");k.setAttribute("value","jpg");mxUtils.write(k,mxResources.get("formatJpg"));p.appendChild(k);k=document.createElement("option");k.setAttribute("value","pdf");mxUtils.write(k,mxResources.get("formatPdf"));p.appendChild(k);k=document.createElement("option");
 k.setAttribute("value","svg");mxUtils.write(k,mxResources.get("formatSvg"));p.appendChild(k);ExportDialog.showXmlOption&&(k=document.createElement("option"),k.setAttribute("value","xml"),mxUtils.write(k,mxResources.get("formatXml")),p.appendChild(k));k=document.createElement("td");k.appendChild(p);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("zoom")+" (%):");f.appendChild(k);var n=document.createElement("input");
 n.setAttribute("type","number");n.setAttribute("value","100");n.style.width="180px";k=document.createElement("td");k.appendChild(n);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("width")+":");f.appendChild(k);var u=document.createElement("input");u.setAttribute("value",h);u.style.width="180px";k=document.createElement("td");k.appendChild(u);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");
-k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("height")+":");f.appendChild(k);var q=document.createElement("input");q.setAttribute("value",g);q.style.width="180px";k=document.createElement("td");k.appendChild(q);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("background")+":");f.appendChild(k);var r=document.createElement("input");r.setAttribute("type",
-"checkbox");r.checked=null==b.background||b.background==mxConstants.NONE;k=document.createElement("td");k.appendChild(r);mxUtils.write(k,mxResources.get("transparent"));f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("borderWidth")+":");f.appendChild(k);var t=document.createElement("input");t.setAttribute("type","number");t.setAttribute("value",ExportDialog.lastBorderValue);t.style.width="180px";
-k=document.createElement("td");k.appendChild(t);f.appendChild(k);l.appendChild(f);e.appendChild(l);mxEvent.addListener(p,"change",c);c();mxEvent.addListener(n,"change",function(){var a=Math.max(0,parseFloat(n.value)||100)/100;n.value=parseFloat((100*a).toFixed(2));0<h?(u.value=Math.floor(h*a),q.value=Math.floor(g*a)):(n.value="100",u.value=h,q.value=g);d()});mxEvent.addListener(u,"change",function(){var a=parseInt(u.value)/h;0<a?(n.value=parseFloat((100*a).toFixed(2)),q.value=Math.floor(g*a)):(n.value=
-"100",u.value=h,q.value=g);d()});mxEvent.addListener(q,"change",function(){var a=parseInt(q.value)/g;0<a?(n.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(n.value="100",u.value=h,q.value=g);d()});f=document.createElement("tr");k=document.createElement("td");k.setAttribute("align","right");k.style.paddingTop="22px";k.colSpan=2;var w=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(n.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var c=
-m.value,d=p.value,e=Math.max(0,parseFloat(n.value)||100)/100,g=Math.max(0,parseInt(t.value)),f=b.background;if(("svg"==d||"png"==d)&&r.checked)f=null;else if(null==f||f==mxConstants.NONE)f="#ffffff";ExportDialog.lastBorderValue=g;ExportDialog.exportFile(a,c,d,f,e,g)}}));w.className="geBtn gePrimaryBtn";var v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst?(k.appendChild(v),k.appendChild(w)):(k.appendChild(w),k.appendChild(v));f.appendChild(k);
+k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("height")+":");f.appendChild(k);var r=document.createElement("input");r.setAttribute("value",g);r.style.width="180px";k=document.createElement("td");k.appendChild(r);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("background")+":");f.appendChild(k);var q=document.createElement("input");q.setAttribute("type",
+"checkbox");q.checked=null==b.background||b.background==mxConstants.NONE;k=document.createElement("td");k.appendChild(q);mxUtils.write(k,mxResources.get("transparent"));f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("borderWidth")+":");f.appendChild(k);var t=document.createElement("input");t.setAttribute("type","number");t.setAttribute("value",ExportDialog.lastBorderValue);t.style.width="180px";
+k=document.createElement("td");k.appendChild(t);f.appendChild(k);l.appendChild(f);e.appendChild(l);mxEvent.addListener(p,"change",c);c();mxEvent.addListener(n,"change",function(){var a=Math.max(0,parseFloat(n.value)||100)/100;n.value=parseFloat((100*a).toFixed(2));0<h?(u.value=Math.floor(h*a),r.value=Math.floor(g*a)):(n.value="100",u.value=h,r.value=g);d()});mxEvent.addListener(u,"change",function(){var a=parseInt(u.value)/h;0<a?(n.value=parseFloat((100*a).toFixed(2)),r.value=Math.floor(g*a)):(n.value=
+"100",u.value=h,r.value=g);d()});mxEvent.addListener(r,"change",function(){var a=parseInt(r.value)/g;0<a?(n.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(n.value="100",u.value=h,r.value=g);d()});f=document.createElement("tr");k=document.createElement("td");k.setAttribute("align","right");k.style.paddingTop="22px";k.colSpan=2;var w=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(n.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var c=
+m.value,d=p.value,e=Math.max(0,parseFloat(n.value)||100)/100,g=Math.max(0,parseInt(t.value)),f=b.background;if(("svg"==d||"png"==d)&&q.checked)f=null;else if(null==f||f==mxConstants.NONE)f="#ffffff";ExportDialog.lastBorderValue=g;ExportDialog.exportFile(a,c,d,f,e,g)}}));w.className="geBtn gePrimaryBtn";var v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst?(k.appendChild(v),k.appendChild(w)):(k.appendChild(w),k.appendChild(v));f.appendChild(k);
 l.appendChild(f);e.appendChild(l);this.container=e};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0;
 ExportDialog.exportFile=function(a,c,d,b,f,e){var h=a.editor.graph;if("xml"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),c,d);else if("svg"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(h.getSvg(b,f,e)),c,d);else{var g=h.getGraphBounds(),k=mxUtils.createXmlDocument(),l=k.createElement("output");k.appendChild(l);k=new mxXmlCanvas2D(l);k.translate(Math.floor((e/f-g.x)/h.view.scale),Math.floor((e/f-g.y)/h.view.scale));k.scale(f/h.view.scale);(new mxImageExport).drawState(h.getView().getState(h.model.root),
 k);l="xml="+encodeURIComponent(mxUtils.getXml(l));k=Math.ceil(g.width*f/h.view.scale+2*e);f=Math.ceil(g.height*f/h.view.scale+2*e);l.length<=MAX_REQUEST_SIZE&&k*f<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+d+"&filename="+encodeURIComponent(c)+"&bg="+(null!=b?b:"none")+"&w="+k+"&h="+f+"&"+l)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
 ExportDialog.saveLocalFile=function(a,c,d,b){c.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(d)+"&format="+b)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
 var EditDataDialog=function(a,c){function d(){0<w.value.length?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}var b=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(c);if(!mxUtils.isNode(e)){var h=mxUtils.createXmlDocument().createElement("object");h.setAttribute("label",e||"");e=h}var g=new mxForm("properties");g.table.style.width="100%";for(var k=e.attributes,l=[],m=[],p=0,n=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,
 c):null,u=function(a,b){var c=document.createElement("div");c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin=
-"0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){m[c]=null;g.table.deleteRow(b+(null!=n?1:0));break}null!=m[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;m[a]=g.addTextarea(l[p]+":",c,2);m[a].style.width="100%";u(m[a],b)},q=[],r=f.getModel().getParent(c)==f.getModel().getRoot(),t=0;t<k.length;t++)!r&&
-"label"==k[t].nodeName||"placeholders"==k[t].nodeName||q.push({name:k[t].nodeName,value:k[t].nodeValue});q.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=n&&(k=document.createElement("input"),k.style.width="280px",k.style.textAlign="center",k.setAttribute("type","text"),k.setAttribute("readOnly","true"),k.setAttribute("value",n),g.addField(mxResources.get("id")+":",k));for(t=0;t<q.length;t++)h(p,q[t].name,q[t].value),p++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;";
-h.appendChild(g.table);q=document.createElement("div");q.style.whiteSpace="nowrap";q.style.marginTop="6px";var w=document.createElement("input");w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"18":"22");w.style.marginLeft="2px";q.appendChild(w);h.appendChild(q);b.appendChild(h);var v=mxUtils.button(mxResources.get("addProperty"),function(){var a=w.value;if(0<a.length&&"label"!=a&&"placeholders"!=
-a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=m[b])m[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),m.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";m.push(c);u(c,a);c.focus()}w.value=""}catch(F){mxUtils.alert(F)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=function(){0<m.length?m[0].focus():w.focus()};v.setAttribute("disabled","disabled");v.style.marginLeft="10px";v.style.width="144px";q.appendChild(v);h=
-mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.className="geBtn";q=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var b=!1,d=0;d<l.length;d++)null==m[d]?e.removeAttribute(l[d]):(e.setAttribute(l[d],m[d].value),b=b||"placeholder"==l[d]&&"1"==e.getAttribute("placeholders"));b&&e.removeAttribute("label");f.getModel().setValue(c,e)}catch(D){mxUtils.alert(D)}});q.className="geBtn gePrimaryBtn";mxEvent.addListener(w,
-"keyup",d);mxEvent.addListener(w,"change",d);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(c)||a.editor.graph.getModel().isEdge(c)){r=document.createElement("span");r.style.marginRight="10px";t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="6px";"1"==e.getAttribute("placeholders")&&(t.setAttribute("checked","checked"),t.defaultChecked=!0);
-mxEvent.addListener(t,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")});r.appendChild(t);mxUtils.write(r,mxResources.get("placeholders"));if(null!=EditDataDialog.placeholderHelpLink){t=document.createElement("a");t.setAttribute("href",EditDataDialog.placeholderHelpLink);t.setAttribute("title",mxResources.get("help"));t.setAttribute("target","_blank");t.style.marginLeft="8px";t.style.cursor="help";var z=document.createElement("img");
-mxUtils.setOpacity(z,50);z.style.height="16px";z.style.width="16px";z.setAttribute("border","0");z.setAttribute("valign","middle");z.style.marginTop=mxClient.IS_IE11?"0px":"-4px";z.setAttribute("src",Editor.helpImage);t.appendChild(z);r.appendChild(t)}k.appendChild(r)}a.editor.cancelFirst?(k.appendChild(h),k.appendChild(q)):(k.appendChild(q),k.appendChild(h));b.appendChild(k);this.container=b};
+"0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){m[c]=null;g.table.deleteRow(b+(null!=n?1:0));break}null!=m[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;m[a]=g.addTextarea(l[p]+":",c,2);m[a].style.width="100%";u(m[a],b)},r=[],q=f.getModel().getParent(c)==f.getModel().getRoot(),t=0;t<k.length;t++)!q&&
+"label"==k[t].nodeName||"placeholders"==k[t].nodeName||r.push({name:k[t].nodeName,value:k[t].nodeValue});r.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=n&&(k=document.createElement("input"),k.style.width="280px",k.style.textAlign="center",k.setAttribute("type","text"),k.setAttribute("readOnly","true"),k.setAttribute("value",n),g.addField(mxResources.get("id")+":",k));for(t=0;t<r.length;t++)h(p,r[t].name,r[t].value),p++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;";
+h.appendChild(g.table);r=document.createElement("div");r.style.whiteSpace="nowrap";r.style.marginTop="6px";var w=document.createElement("input");w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"18":"22");w.style.marginLeft="2px";r.appendChild(w);h.appendChild(r);b.appendChild(h);var v=mxUtils.button(mxResources.get("addProperty"),function(){var a=w.value;if(0<a.length&&"label"!=a&&"placeholders"!=
+a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=m[b])m[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),m.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";m.push(c);u(c,a);c.focus()}w.value=""}catch(E){mxUtils.alert(E)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=function(){0<m.length?m[0].focus():w.focus()};v.setAttribute("disabled","disabled");v.style.marginLeft="10px";v.style.width="144px";r.appendChild(v);h=
+mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.className="geBtn";r=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var b=!1,d=0;d<l.length;d++)null==m[d]?e.removeAttribute(l[d]):(e.setAttribute(l[d],m[d].value),b=b||"placeholder"==l[d]&&"1"==e.getAttribute("placeholders"));b&&e.removeAttribute("label");f.getModel().setValue(c,e)}catch(C){mxUtils.alert(C)}});r.className="geBtn gePrimaryBtn";mxEvent.addListener(w,
+"keyup",d);mxEvent.addListener(w,"change",d);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(c)||a.editor.graph.getModel().isEdge(c)){q=document.createElement("span");q.style.marginRight="10px";t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="6px";"1"==e.getAttribute("placeholders")&&(t.setAttribute("checked","checked"),t.defaultChecked=!0);
+mxEvent.addListener(t,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")});q.appendChild(t);mxUtils.write(q,mxResources.get("placeholders"));if(null!=EditDataDialog.placeholderHelpLink){t=document.createElement("a");t.setAttribute("href",EditDataDialog.placeholderHelpLink);t.setAttribute("title",mxResources.get("help"));t.setAttribute("target","_blank");t.style.marginLeft="8px";t.style.cursor="help";var z=document.createElement("img");
+mxUtils.setOpacity(z,50);z.style.height="16px";z.style.width="16px";z.setAttribute("border","0");z.setAttribute("valign","middle");z.style.marginTop=mxClient.IS_IE11?"0px":"-4px";z.setAttribute("src",Editor.helpImage);t.appendChild(z);q.appendChild(t)}k.appendChild(q)}a.editor.cancelFirst?(k.appendChild(h),k.appendChild(r)):(k.appendChild(r),k.appendChild(h));b.appendChild(k);this.container=b};
 EditDataDialog.getDisplayIdForCell=function(a,c){var d=null;null!=a.editor.graph.getModel().getParent(c)&&(d=c.getId());return d};EditDataDialog.placeholderHelpLink=null;
 var LinkDialog=function(a,c,d,b){var f=document.createElement("div");mxUtils.write(f,mxResources.get("editLink")+":");var e=document.createElement("div");e.className="geTitle";e.style.backgroundColor="transparent";e.style.borderColor="transparent";e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.cursor="default";mxClient.IS_VML||(e.style.paddingRight="20px");var h=document.createElement("input");h.setAttribute("value",c);h.setAttribute("placeholder","http://www.example.com/");h.setAttribute("type",
 "text");h.style.marginTop="6px";h.style.width="400px";h.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";h.style.backgroundRepeat="no-repeat";h.style.backgroundPosition="100% 50%";h.style.paddingRight="14px";c=document.createElement("div");c.setAttribute("title",mxResources.get("reset"));c.style.position="relative";c.style.left="-16px";c.style.width="12px";c.style.height="14px";c.style.cursor="pointer";c.style.display=mxClient.IS_VML?"inline":"inline-block";c.style.top=(mxClient.IS_VML?
@@ -3279,20 +3282,20 @@ arguments);b.gridEnabled=!1;b.pageScale=h.pageScale;b.pageFormat=h.pageFormat;b.
 function(){e();l.update(!0)});if(l.outline.dialect==mxConstants.DIALECT_SVG){var p=a.actions.get("zoomIn"),n=a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(a,b){for(var c=!1,d=mxEvent.getSource(a);null!=d;){if(d==l.outline.view.canvas.ownerSVGElement){c=!0;break}d=d.parentNode}c&&(b?p.funct():n.funct(),mxEvent.consume(a))})}},LayersWindow=function(a,c,d,b,f){function e(b){if(g.isEnabled()&&null!=b){var c=g.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"),
 mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&g.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function h(){function a(a,b,c,d){var f=document.createElement("div");f.className="geToolbarContainer";f.style.overflow="hidden";f.style.position="relative";f.style.padding="4px";f.style.height="22px";f.style.display="block";f.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;f.style.borderWidth=
 "0px 0px 1px 0px";f.style.borderColor="#c3c3c3";f.style.borderStyle="solid";f.style.whiteSpace="nowrap";f.setAttribute("title",b);var k=document.createElement("div");k.style.display="inline-block";k.style.width="100%";k.style.textOverflow="ellipsis";k.style.overflow="hidden";mxEvent.addListener(f,"dragover",function(b){b.dataTransfer.dropEffect="move";n=a;b.stopPropagation();b.preventDefault()});mxEvent.addListener(f,"dragstart",function(a){p=f;mxClient.IS_FF&&a.dataTransfer.setData("Text","<layer/>")});
-mxEvent.addListener(f,"dragend",function(a){null!=p&&null!=n&&g.addCell(c,g.model.root,n);n=p=null;a.stopPropagation();a.preventDefault()});var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","top");l.setAttribute("border","0");l.style.padding="4px";l.setAttribute("title",mxResources.get("lockUnlock"));var r=g.view.getState(c),t=null!=r?r.style:g.getCellStyle(c);"1"==mxUtils.getValue(t,"locked","0")?l.setAttribute("src",Dialog.prototype.lockedImage):l.setAttribute("src",
+mxEvent.addListener(f,"dragend",function(a){null!=p&&null!=n&&g.addCell(c,g.model.root,n);n=p=null;a.stopPropagation();a.preventDefault()});var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","top");l.setAttribute("border","0");l.style.padding="4px";l.setAttribute("title",mxResources.get("lockUnlock"));var q=g.view.getState(c),t=null!=q?q.style:g.getCellStyle(c);"1"==mxUtils.getValue(t,"locked","0")?l.setAttribute("src",Dialog.prototype.lockedImage):l.setAttribute("src",
 Dialog.prototype.unlockedImage);g.isEnabled()&&(l.style.cursor="pointer");mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){var b=null;g.getModel().beginUpdate();try{b="1"==mxUtils.getValue(t,"locked","0")?null:"1",g.setCellStyles("locked",b,[c])}finally{g.getModel().endUpdate()}"1"==b&&g.removeSelectionCells(g.getModel().getDescendants(c));mxEvent.consume(a)}});k.appendChild(l);l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("title",mxResources.get("hideIt",
 [c.value||mxResources.get("background")]));l.style.marginLeft="4px";l.style.marginRight="6px";l.style.marginTop="4px";k.appendChild(l);g.model.isVisible(c)&&(l.setAttribute("checked","checked"),l.defaultChecked=!0);mxEvent.addListener(l,"click",function(a){g.model.setVisible(c,!g.model.isVisible(c));mxEvent.consume(a)});mxUtils.write(k,b);f.appendChild(k);if(g.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_VML||mxClient.IS_IE&&10>document.documentMode)b=document.createElement("div"),
 b.style.display="block",b.style.textAlign="right",b.style.whiteSpace="nowrap",b.style.position="absolute",b.style.right="6px",b.style.top="6px",0<a&&(k=document.createElement("a"),k.setAttribute("title",mxResources.get("toBack")),k.className="geButton",k.style.cssFloat="none",k.innerHTML="&#9660;",k.style.width="14px",k.style.height="14px",k.style.fontSize="14px",k.style.margin="0px",k.style.marginTop="-1px",b.appendChild(k),mxEvent.addListener(k,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,
 a-1);mxEvent.consume(b)})),0<=a&&a<u-1&&(k=document.createElement("a"),k.setAttribute("title",mxResources.get("toFront")),k.className="geButton",k.style.cssFloat="none",k.innerHTML="&#9650;",k.style.width="14px",k.style.height="14px",k.style.fontSize="14px",k.style.margin="0px",k.style.marginTop="-1px",b.appendChild(k),mxEvent.addListener(k,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,a+1);mxEvent.consume(b)})),f.appendChild(b);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&
-(f.setAttribute("draggable","true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});g.getDefaultParent()==c?(f.style.background="white"==Dialog.backdropColor?"#e6eff8":"#505759",f.style.fontWeight=g.isEnabled()?"bold":"",q=c):mxEvent.addListener(f,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),h())});m.appendChild(f)}u=g.model.getChildCount(g.model.root);
-m.innerHTML="";for(var b=u-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(q)||mxResources.get("background");t.setAttribute("title",mxResources.get("removeIt",[c]));w.setAttribute("title",mxResources.get("moveSelectionTo",[c]));z.setAttribute("title",mxResources.get("duplicateIt",[c]));v.setAttribute("title",mxResources.get("editData"));g.isSelectionEmpty()&&(w.className="geButton mxDisabled")}
+(f.setAttribute("draggable","true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});g.getDefaultParent()==c?(f.style.background="white"==Dialog.backdropColor?"#e6eff8":"#505759",f.style.fontWeight=g.isEnabled()?"bold":"",r=c):mxEvent.addListener(f,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),h())});m.appendChild(f)}u=g.model.getChildCount(g.model.root);
+m.innerHTML="";for(var b=u-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(r)||mxResources.get("background");t.setAttribute("title",mxResources.get("removeIt",[c]));w.setAttribute("title",mxResources.get("moveSelectionTo",[c]));z.setAttribute("title",mxResources.get("duplicateIt",[c]));v.setAttribute("title",mxResources.get("editData"));g.isSelectionEmpty()&&(w.className="geButton mxDisabled")}
 var g=a.editor.graph,k=document.createElement("div");k.style.userSelect="none";k.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;k.style.border="1px solid whiteSmoke";k.style.height="100%";k.style.marginBottom="10px";k.style.overflow="auto";var l=EditorUi.compactUi?"26px":"30px",m=document.createElement("div");m.style.backgroundColor="white"==Dialog.backdropColor?"#dcdcdc":Dialog.backdropColor;m.style.position="absolute";m.style.overflow="auto";m.style.left="0px";
-m.style.right="0px";m.style.top="0px";m.style.bottom=parseInt(l)+7+"px";k.appendChild(m);var p=null,n=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";n=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,q=null,r=document.createElement("div");r.className="geToolbarContainer";r.style.position="absolute";r.style.bottom="0px";r.style.left="0px";r.style.right="0px";r.style.height=l;r.style.overflow=
-"hidden";r.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";r.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;r.style.borderWidth="1px 0px 0px 0px";r.style.borderColor="#c3c3c3";r.style.borderStyle="solid";r.style.display="block";r.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(r.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var t=l.cloneNode();t.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>';
-mxEvent.addListener(t,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(q);g.removeCells([q],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(t.className="geButton mxDisabled");r.appendChild(t);var w=l.cloneNode();
-w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(a){g.isEnabled()&&!g.isSelectionEmpty()&&g.moveCells(g.getSelectionCells(),0,0,!1,q)});r.appendChild(w);var v=l.cloneNode();v.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';v.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(v,"click",function(b){g.isEnabled()&&a.showDataDialog(q);mxEvent.consume(b)});g.isEnabled()||
-(v.className="geButton mxDisabled");r.appendChild(v);var z=l.cloneNode();z.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(z,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(q),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(z.className="geButton mxDisabled");
-r.appendChild(z);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(l.className="geButton mxDisabled");r.appendChild(l);k.appendChild(r);h();g.model.addListener(mxEvent.CHANGE,
+m.style.right="0px";m.style.top="0px";m.style.bottom=parseInt(l)+7+"px";k.appendChild(m);var p=null,n=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";n=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,r=null,q=document.createElement("div");q.className="geToolbarContainer";q.style.position="absolute";q.style.bottom="0px";q.style.left="0px";q.style.right="0px";q.style.height=l;q.style.overflow=
+"hidden";q.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";q.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;q.style.borderWidth="1px 0px 0px 0px";q.style.borderColor="#c3c3c3";q.style.borderStyle="solid";q.style.display="block";q.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(q.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var t=l.cloneNode();t.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>';
+mxEvent.addListener(t,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(r);g.removeCells([r],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(t.className="geButton mxDisabled");q.appendChild(t);var w=l.cloneNode();
+w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(a){g.isEnabled()&&!g.isSelectionEmpty()&&g.moveCells(g.getSelectionCells(),0,0,!1,r)});q.appendChild(w);var v=l.cloneNode();v.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';v.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(v,"click",function(b){g.isEnabled()&&a.showDataDialog(r);mxEvent.consume(b)});g.isEnabled()||
+(v.className="geButton mxDisabled");q.appendChild(v);var z=l.cloneNode();z.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(z,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(r),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(z.className="geButton mxDisabled");
+q.appendChild(z);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(l.className="geButton mxDisabled");q.appendChild(l);k.appendChild(q);h();g.model.addListener(mxEvent.CHANGE,
 function(){h()});g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?w.className="geButton mxDisabled":w.className="geButton"});this.window=new mxWindow(mxResources.get("layers"),k,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,120,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.refreshLayers=h;this.window.setLocation=function(a,b){var c=window.innerHeight||
 document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var x=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",x);this.destroy=
 function(){mxEvent.removeListener(window,"resize",x);this.window.destroy()}};
@@ -3318,7 +3321,7 @@ a:null!=urlParams.libs&&0<urlParams.libs.length?decodeURIComponent(urlParams.lib
 e=0;e<f.entries.length;e++){var g=f.entries[e];if(null!=g.libs&&0<g.libs.length){for(var h=[],n=0;n<g.libs.length;n++)h.push(g.id+"."+n);this.showPalettes("",h,0<=mxUtils.indexOf(c,g.id))}}b&&(mxSettings.setLibraries(a),mxSettings.save())};Sidebar.prototype.init=function(){this.entries=[{title:mxResources.get("standard"),entries:[{title:mxResources.get("general"),id:"general",image:IMAGE_PATH+"/sidebar-general.png"},{title:mxResources.get("arrows"),id:"arrows2",image:IMAGE_PATH+"/sidebar-arrows2.png"},
 {title:mxResources.get("basic"),id:"basic",image:IMAGE_PATH+"/sidebar-basic.png"},{title:mxResources.get("clipart"),id:"clipart",image:IMAGE_PATH+"/sidebar-clipart.png"},{title:mxResources.get("flowchart"),id:"flowchart",image:IMAGE_PATH+"/sidebar-flowchart.png"}]},{title:mxResources.get("software"),entries:[{title:mxResources.get("android"),id:"android",image:IMAGE_PATH+"/sidebar-android.png"},{title:"Atlassian",id:"atlassian",image:IMAGE_PATH+"/sidebar-atlassian.png"},{title:mxResources.get("bootstrap"),
 id:"bootstrap",image:IMAGE_PATH+"/sidebar-bootstrap.png"},{title:"Data Flow Diagram",id:"dfd",image:IMAGE_PATH+"/sidebar-dfd.png"},{title:mxResources.get("entityRelation"),id:"er",image:IMAGE_PATH+"/sidebar-er.png"},{title:mxResources.get("ios"),id:"ios",image:IMAGE_PATH+"/sidebar-ios.png"},{title:mxResources.get("mockups"),id:"mockups",image:IMAGE_PATH+"/sidebar-mockups.png"},{title:"Sitemap",id:"sitemap",image:IMAGE_PATH+"/sidebar-sitemap.png"},{title:mxResources.get("uml"),id:"uml",image:IMAGE_PATH+
-"/sidebar-uml.png"}]},{title:mxResources.get("networking"),entries:[{title:"AWS17",id:"aws3",image:IMAGE_PATH+"/sidebar-aws3.png"},{title:"AWS18",id:"aws4",image:IMAGE_PATH+"/sidebar-aws4.png"},{title:"Allied Telesis",id:"allied_telesis",image:IMAGE_PATH+"/sidebar-allied_telesis.png"},{title:mxResources.get("aws3d"),id:"aws3d",image:IMAGE_PATH+"/sidebar-aws3d.png"},{title:mxResources.get("azure"),id:"azure",image:IMAGE_PATH+"/sidebar-azure.png"},{title:"Cloud & Enterprise",id:"mscae",image:IMAGE_PATH+
+"/sidebar-uml.png"}]},{title:mxResources.get("networking"),entries:[{title:"AWS17",id:"aws3",image:IMAGE_PATH+"/sidebar-aws3.png"},{title:"AWS19",id:"aws4",image:IMAGE_PATH+"/sidebar-aws4.png"},{title:"Allied Telesis",id:"allied_telesis",image:IMAGE_PATH+"/sidebar-allied_telesis.png"},{title:mxResources.get("aws3d"),id:"aws3d",image:IMAGE_PATH+"/sidebar-aws3d.png"},{title:mxResources.get("azure"),id:"azure",image:IMAGE_PATH+"/sidebar-azure.png"},{title:"Cloud & Enterprise",id:"mscae",image:IMAGE_PATH+
 "/sidebar-mscae.png"},{title:mxResources.get("cisco"),id:"cisco",image:IMAGE_PATH+"/sidebar-cisco.png"},{title:"Cisco Safe",id:"cisco_safe",image:IMAGE_PATH+"/sidebar-cisco_safe.png"},{title:"Citrix",id:"citrix",image:IMAGE_PATH+"/sidebar-citrix.png"},{title:"Google Cloud Platform",id:"gcp2",image:IMAGE_PATH+"/sidebar-gcp2.png"},{title:"IBM",id:"ibm",image:IMAGE_PATH+"/sidebar-ibm.png"},{title:"Network",id:"network",image:IMAGE_PATH+"/sidebar-network.png"},{title:"Office",id:"office",image:IMAGE_PATH+
 "/sidebar-office.png"},{title:mxResources.get("rack"),id:"rack",image:IMAGE_PATH+"/sidebar-rack.png"},{title:"Veeam",id:"veeam",image:IMAGE_PATH+"/sidebar-veeam.png"}]},{title:mxResources.get("business"),entries:[{title:"ArchiMate 3.0",id:"archimate3",image:IMAGE_PATH+"/sidebar-archimate3.png"},{title:mxResources.get("archiMate21"),id:"archimate",image:IMAGE_PATH+"/sidebar-archimate.png"},{title:mxResources.get("bpmn"),id:"bpmn",image:IMAGE_PATH+"/sidebar-bpmn.png"},{title:mxResources.get("leanMapping"),
 id:"lean_mapping",image:IMAGE_PATH+"/sidebar-leanmapping.png"},{title:mxResources.get("sysml"),id:"sysml",image:IMAGE_PATH+"/sidebar-sysml.png"}]},{title:mxResources.get("other"),entries:[{title:mxResources.get("cabinets"),id:"cabinets",image:IMAGE_PATH+"/sidebar-cabinets.png"},{title:"Infographic",id:"infographic",image:IMAGE_PATH+"/sidebar-infographic.png"},{title:mxResources.get("eip"),id:"eip",image:IMAGE_PATH+"/sidebar-eip.png"},{title:mxResources.get("electrical"),id:"electrical",image:IMAGE_PATH+
@@ -3994,7 +3997,7 @@ this.createVertexTemplateEntry(a+"arrowNW;fillColor=#000000;aspect=fixed;",45.5,
 null,null,this.getTagsForStencil("mxgraph.aws3d","arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"flatEdge;fillColor=#000000;aspect=fixed;",63.2,36,"","Flat Edge",null,null,this.getTagsForStencil("mxgraph.aws3d","arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"flatDoubleEdge;fillColor=#000000;aspect=fixed;",252.8,144,"","Flat Double Edge",null,null,this.getTagsForStencil("mxgraph.aws3d",
 "arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"arrowhead;aspect=fixed;",19,11,"","Arrowhead",null,null,this.getTagsForStencil("mxgraph.aws3d","arrowhead","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"edge;aspect=fixed;",97,107.4,"","Edge",null,null,this.getTagsForStencil("mxgraph.aws3d","edge","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"reference;aspect=fixed;",29.5,19.5,"","Reference",
 null,null,this.getTagsForStencil("mxgraph.aws3d","reference","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"spot;aspect=fixed;",62,36,"","Spot",null,null,this.getTagsForStencil("mxgraph.aws3d","spot","aws 3d amazon web service").join(" ")),this.createEdgeTemplateEntry("edgeStyle=isometricEdgeStyle;endArrow=none;html=1;",50,100,"isometric edge","Isometric Edge 1"),this.createEdgeTemplateEntry("edgeStyle=isometricEdgeStyle;endArrow=none;html=1;elbow=vertical;",50,100,"isometric edge",
-"Isometric Edge 2")])}})();(function(){Sidebar.prototype.addAWS4Palette=function(){var a="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",e="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+
+"Isometric Edge 2")])}})();(function(){Sidebar.prototype.addAWS4Palette=function(){var a="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;strokeColor=#ffffff;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",e="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+
 mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",d="outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",b="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;"+
 mxConstants.STYLE_SHAPE+"=mxgraph.aws4.";this.addAWS4ArrowsPalette("mxgraph.aws4",this);this.addAWS4GeneralResourcesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IllustrationsPalette(d,"mxgraph.aws4",this);this.addAWS4GroupsLightPalette(b,"mxgraph.aws4",this);this.addAWS4GroupsDarkPalette(b,"mxgraph.aws4",this);this.addAWS4AnalyticsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ApplicationIntegrationPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ARVRPalette(80,100,60,a,e,
 "mxgraph.aws4",this);this.addAWS4CostManagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4BusinessProductivityPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ComputePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4CustomerEngagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DatabasePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DesktopAppStreamingPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DeveloperToolsPalette(80,100,60,a,e,"mxgraph.aws4",this);
@@ -4029,109 +4032,112 @@ this.createVertexTemplateEntry(a+"group;grIcon="+e+".group_spot_fleet;strokeColo
 130,130,"Elastic Load Balancing","Elastic Load Balancing",null,null,this.getTagsForStencil(e,"elastic load balancing","aws group amazon web service groups group dark").join(" ")),this.createVertexTemplateEntry("outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;strokeColor=#858B94;fillColor=none;verticalAlign=top;align=center;fontColor=#858B94;dashed=1;spacingTop=3;",130,130,"Generic Group","Generic Group",null,null,this.getTagsForStencil(e,"generic","aws group amazon web service groups group dark").join(" ")),
 this.createVertexTemplateEntry("outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;strokeColor=#FF9900;fillColor=none;verticalAlign=top;align=center;fontColor=#FF9900;dashed=0;spacingTop=3;",130,130,"Highlight","Highlight",null,null,this.getTagsForStencil(e,"highlight","aws group amazon web service groups group dark").join(" ")),this.createVertexTemplateEntry(a+"group;grIcon="+e+".group_aws_step_functions_workflow;strokeColor=#E8E8E8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#E8E8E8;dashed=0;",
 130,130,"AWS Step Functions workflow","AWS Step Functions workflow",null,null,this.getTagsForStencil(e,"step functions workflow","aws group amazon web service groups group dark").join(" ")),this.createVertexTemplateEntry(a+"group;grIcon="+e+".group_spot_fleet;strokeColor=#FFFFFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#FFFFFF;dashed=0;",130,130,"Spot Fleet","Spot Fleet",null,null,this.getTagsForStencil(e,"spot fleet","aws group amazon web service groups group dark").join(" "))])};
-Sidebar.prototype.addAWS4AnalyticsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Analytics","AWS / Analytics",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".athena;",a,e+10,"Amazon Athena",null,null,null,this.getTagsForStencil(f,"athena","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudsearch;",a,e+10,"Amazon CloudSearch",null,null,null,this.getTagsForStencil(f,"cloudsearch cloud search","aws amazon web service analytics").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".emr;",a,e,"Amazon EMR",null,null,null,this.getTagsForStencil(f,"emr","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticsearch_service;",a,e+20,"Amazon Elasticsearch Service",null,null,null,this.getTagsForStencil(f,"elasticsearch elastic search service","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis;",a,e+10,"Amazon Kinesis",
-null,null,null,this.getTagsForStencil(f,"kinesis","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_analytics;",a,e+20,"Amazon Kinesis Data Analytics",null,null,null,this.getTagsForStencil(f,"kinesis data analytics","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_firehose;",a,e+20,"Amazon Kinesis Data Firehose",null,null,null,this.getTagsForStencil(f,"kinesis data firehose",
-"aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_streams;",a,e+20,"Amazon Kinesis Data Streams",null,null,null,this.getTagsForStencil(f,"kinesis data streams","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_video_streams;",a,e+20,"Amazon Kinesis Video Streams",null,null,null,this.getTagsForStencil(f,"kinesis video streams","aws amazon web service analytics").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".redshift;",a,e+10,"Amazon Redshift",null,null,null,this.getTagsForStencil(f,"redshift","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".quicksight;",a,e+10,"Amazon QuickSight",null,null,null,this.getTagsForStencil(f,"quicksight quick sight","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".data_pipeline;",a,e+10,"AWS Data Pipeline",
-null,null,null,this.getTagsForStencil(f,"data pipeline","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".glue;",a,e,"AWS Glue",null,null,null,this.getTagsForStencil(f,"glue","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".search_documents;",d,d,"Search\ndocuments",null,null,null,this.getTagsForStencil(f,"search documents","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".cluster;",d,d,"Cluster",null,null,null,this.getTagsForStencil(f,"cluster","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hdfs_cluster;",d,d,"HDFS cluster",null,null,null,this.getTagsForStencil(f,"hdfs cluster","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine;",d,d,"EMR engine",null,null,null,this.getTagsForStencil(f,"emr engine","aws amazon web service analytics").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m3;",d,d,"EMR engine\nMapR M3",null,null,null,this.getTagsForStencil(f,"emr engine mapr m3","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m5;",d,d,"EMR engine\nMapR M5",null,null,null,this.getTagsForStencil(f,"emr engine mapr m5","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m7;",
-d,d,"EMR engine\nMapR M7",null,null,null,this.getTagsForStencil(f,"emr engine mapr m7","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_compute_node;",d,d,"Dense\ncompute Node",null,null,null,this.getTagsForStencil(f,"dense compute node","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_storage_node;",d,d,"Dense\nstorage Node",null,null,null,this.getTagsForStencil(f,"dense storage node",
-"aws amazon web service analytics").join(" "))])};Sidebar.prototype.addAWS4ApplicationIntegrationPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Application Integration","AWS / Application Integration",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".step_functions;",a,e+10,"AWS Step Functions",null,null,null,this.getTagsForStencil(f,"step functions","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".mq;",
-a,e,"Amazon MQ",null,null,null,this.getTagsForStencil(f,"mq","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sns;",a,e,"Amazon SNS",null,null,null,this.getTagsForStencil(f,"sns","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sqs;",a,e,"Amazon SQS",null,null,null,this.getTagsForStencil(f,"sqs","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".appsync;",a,e,"AWS AppSync",null,null,null,this.getTagsForStencil(f,"appsync","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".email_notification;",d,d,"Email\nnotification",null,null,null,this.getTagsForStencil(f,"email notification","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http_notification;",d,d,"HTTP\nnotification",
-null,null,null,this.getTagsForStencil(f,"http notification","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".topic;",d,d,"Topic",null,null,null,this.getTagsForStencil(f,"topic","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".message;",d,d,"Message",null,null,null,this.getTagsForStencil(f,"message","aws amazon web service application integration").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".queue;",d,d,"Queue",null,null,null,this.getTagsForStencil(f,"queue","aws amazon web service application integration").join(" "))])};Sidebar.prototype.addAWS4ARVRPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4AR VR","AWS / AR & VR",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sumerian;",a,e+10,"Amazon Sumerian",null,null,null,this.getTagsForStencil(f,"sumerian","aws amazon web service ar vr augmented virtual reality").join(" "))])};
-Sidebar.prototype.addAWS4CostManagementPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Cost Management","AWS / Cost Management",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cost_explorer;",a,e+10,"AWS Cost Explorer",null,null,null,this.getTagsForStencil(f,"cost explorer","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".budgets;",a,e,"AWS Budgets",null,null,null,this.getTagsForStencil(f,"budgets","aws amazon web service cost management").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cost_and_usage_report;",a,e+10,"AWS Cost and Usage Report",null,null,null,this.getTagsForStencil(f,"cost usage report","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".reserved_instance_reporting;",a,e+20,"Reserved Instance Reporting",null,null,null,this.getTagsForStencil(f,"reserved instance reporting","aws amazon web service cost management").join(" "))])};Sidebar.prototype.addAWS4BusinessProductivityPalette=
-function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Business Productivity","AWS / Business Productivity",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".alexa_for_business;",a,e+10,"Alexa for Business",null,null,null,this.getTagsForStencil(f,"alexa for business","aws amazon web service business productivity").join(" "))])};Sidebar.prototype.addAWS4ComputePalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Compute","AWS / Compute",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".ec2;",a,e,"Amazon EC2",null,null,null,this.getTagsForStencil(f,"ec2","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ecr;",a,e,"Amazon ECR",null,null,null,this.getTagsForStencil(f,"ecr","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ecs;",a,e,"Amazon ECS",null,null,null,this.getTagsForStencil(f,"ecs","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".eks;",a,e,"Amazon EKS",null,null,null,this.getTagsForStencil(f,"eks","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lightsail;",a,e+10,"Amazon Lightsail",null,null,null,this.getTagsForStencil(f,"lightsail","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".batch;",a,e,"AWS Batch",null,null,null,this.getTagsForStencil(f,"batch","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".elastic_beanstalk;",a,e+10,"AWS Elastic Beanstalk",null,null,null,this.getTagsForStencil(f,"elastic beanstalk","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".fargate;",a,e,"AWS Fargate",null,null,null,this.getTagsForStencil(f,"fargate","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lambda;",a,e,"AWS Lambda",null,null,null,this.getTagsForStencil(f,"lambda","aws amazon web service compute").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".serverless_application_repository;",a,e+35,"AWS Serverless Application Repository",null,null,null,this.getTagsForStencil(f,"serverless application repository","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_load_balancing;",a,e+10,"Elastic Load Balancing",null,null,null,this.getTagsForStencil(f,"elastic load balancing","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".application_load_balancer;",a,e+10,"Application Load Balancer",null,null,null,this.getTagsForStencil(f,"application load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".classic_load_balancer;",a,e+10,"Classic Load Balancer",null,null,null,this.getTagsForStencil(f,"classic load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".network_load_balancer;",
-a,e+10,"Network Load Balancer",null,null,null,this.getTagsForStencil(f,"network load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".vmware_cloud_on_aws;",a,e+10,"VMware Cloud on AWS",null,null,null,this.getTagsForStencil(f,"vmware cloud on","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ami;",d,d,"AMI",null,null,null,this.getTagsForStencil(f,"ami","aws amazon web service compute").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".auto_scaling;",d,d,"Auto Scaling",null,null,null,this.getTagsForStencil(f,"auto scaling","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_on_instance;",d,d,"DB on\nInstance",null,null,null,this.getTagsForStencil(f,"db on instance database","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".elastic_ip_address;",d,d,"Elastic IP\nAddress",
-null,null,null,this.getTagsForStencil(f,"elastic ip address internet protocol","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instance_with_cloudwatch;",d,d,"Instance with\nCloudWatch",null,null,null,this.getTagsForStencil(f,"instance with cloudwatch","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instance;",d,d,"Instance",null,null,null,this.getTagsForStencil(f,"instance","aws amazon web service compute").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instances;",d,d,"Instances",null,null,null,this.getTagsForStencil(f,"instances","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".optimized_instance;",d,d,"Optimized\nInstance",null,null,null,this.getTagsForStencil(f,"optimized_instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".rescue;",d,d,"Rescue",null,null,null,this.getTagsForStencil(f,
-"rescue","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".spot_instance;",d,d,"Spot Instance",null,null,null,this.getTagsForStencil(f,"spot instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".x1_instance;",d,d,"X1 Instance",null,null,null,this.getTagsForStencil(f,"x1 instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".registry;",d,d,"Registry",null,null,null,this.getTagsForStencil(f,"registry","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_1;",d,d,"Container 1",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_2;",d,d,"Container 2",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_3;",d,d,"Container 3",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".application;",d,d,"Application",null,null,null,this.getTagsForStencil(f,"application","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".deployment;",d,d,"Deployment",null,null,null,this.getTagsForStencil(f,
-"deployment","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lambda_function;",d,d,"Lambda\nFunction",null,null,null,this.getTagsForStencil(f,"lambda function","aws amazon web service compute").join(" "))])};Sidebar.prototype.addAWS4CustomerEngagementPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Customer Engagement","AWS / Customer Engagement",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".connect;",a,e+10,"Amazon Connect",
-null,null,null,this.getTagsForStencil(f,"connect","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".pinpoint;",a,e+10,"Amazon Pinpoint",null,null,null,this.getTagsForStencil(f,"pinpoint","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".simple_email_service;",a,e+10,"Amazon Simple Email Service",null,null,null,this.getTagsForStencil(f,"simple email service","aws amazon web service customer engagement").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".email;",d,d,"Email",null,null,null,this.getTagsForStencil(f,"email","aws amazon web service customer engagement").join(" "))])};Sidebar.prototype.addAWS4DatabasePalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Database","AWS / Database",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".aurora;",a,e+10,"Amazon\nAurora",null,null,null,this.getTagsForStencil(f,"aurora","aws amazon web service db database").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".dynamodb;",a,e+10,"Amazon DynamoDB",null,null,null,this.getTagsForStencil(f,"dynamodb","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache;",a,e+10,"Amazon ElastiCache",null,null,null,this.getTagsForStencil(f,"elasticache","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache_for_memcached;",a,e+20,"Amazon ElastiCache for Memcached",
-null,null,null,this.getTagsForStencil(f,"elasticache for memcached","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache_for_redis;",a,e+20,"Amazon ElastiCache for Redis",null,null,null,this.getTagsForStencil(f,"elasticache for redis","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".neptune;",a,e+10,"Amazon Neptune",null,null,null,this.getTagsForStencil(f,"neptune","aws amazon web service db database").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rds;",a,e,"Amazon RDS",null,null,null,this.getTagsForStencil(f,"rds","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".redshift;",a,e+10,"Amazon Redshift",null,null,null,this.getTagsForStencil(f,"redshift","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".database_migration_service;",a,e+20,"AWS Database Migration Service",null,
-null,null,this.getTagsForStencil(f,"db database migration service","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".attribute;",d,d,"Attribute",null,null,null,this.getTagsForStencil(f,"attribute","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".attributes;",d,d,"Attributes",null,null,null,this.getTagsForStencil(f,"attributes","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".item;",d,d,"Item",null,null,null,this.getTagsForStencil(f,"item","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".items;",d,d,"Items",null,null,null,this.getTagsForStencil(f,"items","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".global_secondary_index;",d,d,"Global\nsecondary\nindex",null,null,null,this.getTagsForStencil(f,"global secondary index",
-"aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".table;",d,d,"Table",null,null,null,this.getTagsForStencil(f,"table","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cache_node;",d,d,"Cache node",null,null,null,this.getTagsForStencil(f,"cache node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance;",d,d,"DB instance",
-null,null,null,this.getTagsForStencil(f,"db instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance_standby;",d,d,"DB instance\nstandby",null,null,null,this.getTagsForStencil(f,"db instance standby","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance_read_replica;",d,d,"DB instance\nread replica",null,null,null,this.getTagsForStencil(f,"db instance read replica",
-"aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".piop;",d,d,"PIOP",null,null,null,this.getTagsForStencil(f,"piop","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ms_sql_instance;",d,d,"MS SQL\ninstance",null,null,null,this.getTagsForStencil(f,"ms sql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ms_sql_instance_alternate;",
-d,d,"MS SQL\ninstance\nalternate",null,null,null,this.getTagsForStencil(f,"ms sql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mysql_db_instance;",d,d,"MySQL DB \ninstance",null,null,null,this.getTagsForStencil(f,"mysql db database instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mysql_db_instance_alternate;",d,d,"MySQL DB \ninstance\nalternate",null,null,
-null,this.getTagsForStencil(f,"mysql db database instance alternate","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".oracle_db_instance;",d,d,"Oracle DB \ninstance",null,null,null,this.getTagsForStencil(f,"oracle db database instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".oracle_db_instance_alternate;",d,d,"Oracle DB \ninstance\nalternate",null,null,null,this.getTagsForStencil(f,
-"oracle db database instance alternate","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sql_primary;",d,d,"SQL primary",null,null,null,this.getTagsForStencil(f,"sql primary","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sql_replica;",d,d,"SQL replica",null,null,null,this.getTagsForStencil(f,"sql replica","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".postgresql_instance;",d,d,"PostgreSQL\ninstance",null,null,null,this.getTagsForStencil(f,"postresql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_compute_node;",d,d,"Dense\ncompute node",null,null,null,this.getTagsForStencil(f,"dense compute node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_storage_node;",d,d,"Dense\nstorage node",
-null,null,null,this.getTagsForStencil(f,"dense storage node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".database_migration_workflow_job;",d,d,"Database\nmigration\nworkflow/job",null,null,null,this.getTagsForStencil(f,"database migration workflow job","aws amazon web service db database").join(" "))])};Sidebar.prototype.addAWS4DesktopAppStreamingPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Desktop App Streaming","AWS / Desktop & App Streaming",
-!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".appstream_20;",a,e+10,"Amazon AppStream 2.0",null,null,null,this.getTagsForStencil(f,"appstream","aws amazon web service db database").join(" "))])};Sidebar.prototype.addAWS4DeveloperToolsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Developer Tools","AWS / Developer Tools",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codestar;",a,e,"AWS CodeStar",null,null,null,this.getTagsForStencil(f,"codestar","aws amazon web service dev developer tools").join(" ")),
+Sidebar.prototype.addAWS4AnalyticsPalette=function(a,e,d,b,c,f,g){b="gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;"+b;c="strokeColor=#5A30B5;"+c;this.addPaletteFunctions("aws4Analytics","AWS / Analytics",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".athena;",a,e+10,"Amazon Athena",null,null,null,this.getTagsForStencil(f,"athena","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudsearch;",a,e+10,"Amazon CloudSearch",
+null,null,null,this.getTagsForStencil(f,"cloudsearch cloud search","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".emr;",a,e,"Amazon EMR",null,null,null,this.getTagsForStencil(f,"emr","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticsearch_service;",a,e+20,"Amazon Elasticsearch Service",null,null,null,this.getTagsForStencil(f,"elasticsearch elastic search service","aws amazon web service analytics").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis;",a,e+10,"Amazon Kinesis",null,null,null,this.getTagsForStencil(f,"kinesis","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_analytics;",a,e+20,"Amazon Kinesis Data Analytics",null,null,null,this.getTagsForStencil(f,"kinesis data analytics","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_firehose;",
+a,e+20,"Amazon Kinesis Data Firehose",null,null,null,this.getTagsForStencil(f,"kinesis data firehose","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_streams;",a,e+20,"Amazon Kinesis Data Streams",null,null,null,this.getTagsForStencil(f,"kinesis data streams","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_video_streams;",a,e+20,"Amazon Kinesis Video Streams",null,
+null,null,this.getTagsForStencil(f,"kinesis video streams","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".redshift;",a,e+10,"Amazon Redshift",null,null,null,this.getTagsForStencil(f,"redshift","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".quicksight;",a,e+10,"Amazon QuickSight",null,null,null,this.getTagsForStencil(f,"quicksight quick sight","aws amazon web service analytics").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".data_pipeline;",a,e+10,"AWS Data Pipeline",null,null,null,this.getTagsForStencil(f,"data pipeline","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".glue;",a,e,"AWS Glue",null,null,null,this.getTagsForStencil(f,"glue","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".search_documents;",d,d,"Search\ndocuments",null,null,null,this.getTagsForStencil(f,
+"search documents","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cluster;",d,d,"Cluster",null,null,null,this.getTagsForStencil(f,"cluster","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hdfs_cluster;",d,d,"HDFS cluster",null,null,null,this.getTagsForStencil(f,"hdfs cluster","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".emr_engine;",d,d,"EMR engine",null,null,null,this.getTagsForStencil(f,"emr engine","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m3;",d,d,"EMR engine\nMapR M3",null,null,null,this.getTagsForStencil(f,"emr engine mapr m3","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m5;",d,d,"EMR engine\nMapR M5",null,null,null,this.getTagsForStencil(f,"emr engine mapr m5",
+"aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m7;",d,d,"EMR engine\nMapR M7",null,null,null,this.getTagsForStencil(f,"emr engine mapr m7","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_compute_node;",d,d,"Dense\ncompute Node",null,null,null,this.getTagsForStencil(f,"dense compute node","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".dense_storage_node;",d,d,"Dense\nstorage Node",null,null,null,this.getTagsForStencil(f,"dense storage node","aws amazon web service analytics").join(" "))])};Sidebar.prototype.addAWS4ApplicationIntegrationPalette=function(a,e,d,b,c,f,g){b="gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;"+b;c="strokeColor=#BC1356;"+c;this.addPaletteFunctions("aws4Application Integration","AWS / Application Integration",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".step_functions;",a,e+10,"AWS Step Functions",null,null,null,this.getTagsForStencil(f,"step functions","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".mq;",a,e,"Amazon MQ",null,null,null,this.getTagsForStencil(f,"mq","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sns;",a,e,"Amazon SNS",null,null,null,this.getTagsForStencil(f,"sns","aws amazon web service application integration").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sqs;",a,e,"Amazon SQS",null,null,null,this.getTagsForStencil(f,"sqs","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".appsync;",a,e,"AWS AppSync",null,null,null,this.getTagsForStencil(f,"appsync","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".email_notification;",d,d,"Email\nnotification",null,null,
+null,this.getTagsForStencil(f,"email notification","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http_notification;",d,d,"HTTP\nnotification",null,null,null,this.getTagsForStencil(f,"http notification","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".topic;",d,d,"Topic",null,null,null,this.getTagsForStencil(f,"topic","aws amazon web service application integration").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".message;",d,d,"Message",null,null,null,this.getTagsForStencil(f,"message","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".queue;",d,d,"Queue",null,null,null,this.getTagsForStencil(f,"queue","aws amazon web service application integration").join(" "))])};Sidebar.prototype.addAWS4ARVRPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4AR VR","AWS / AR & VR",
+!1,[this.createVertexTemplateEntry("gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;"+b+"productIcon;prIcon="+f+".sumerian;",a,e+10,"Amazon Sumerian",null,null,null,this.getTagsForStencil(f,"sumerian","aws amazon web service ar vr augmented virtual reality").join(" "))])};Sidebar.prototype.addAWS4CostManagementPalette=function(a,e,d,b,c,f,g){b="gradientColor=#60A337;gradientDirection=north;fillColor=#277116;"+b;this.addPaletteFunctions("aws4Cost Management","AWS / Cost Management",
+!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cost_explorer;",a,e+10,"AWS Cost Explorer",null,null,null,this.getTagsForStencil(f,"cost explorer","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".budgets;",a,e,"AWS Budgets",null,null,null,this.getTagsForStencil(f,"budgets","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cost_and_usage_report;",a,e+10,"AWS Cost and Usage Report",
+null,null,null,this.getTagsForStencil(f,"cost usage report","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".reserved_instance_reporting;",a,e+20,"Reserved Instance Reporting",null,null,null,this.getTagsForStencil(f,"reserved instance reporting","aws amazon web service cost management").join(" "))])};Sidebar.prototype.addAWS4BusinessProductivityPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Business Productivity","AWS / Business Productivity",
+!1,[this.createVertexTemplateEntry("gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;"+b+"productIcon;prIcon="+f+".alexa_for_business;",a,e+10,"Alexa for Business",null,null,null,this.getTagsForStencil(f,"alexa for business","aws amazon web service business productivity").join(" "))])};Sidebar.prototype.addAWS4ComputePalette=function(a,e,d,b,c,f,g){b="gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;"+b;c="strokeColor=#D05C17;"+c;this.addPaletteFunctions("aws4Compute",
+"AWS / Compute",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ec2;",a,e,"Amazon EC2",null,null,null,this.getTagsForStencil(f,"ec2","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ecr;",a,e,"Amazon ECR",null,null,null,this.getTagsForStencil(f,"ecr","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ecs;",a,e,"Amazon ECS",null,null,null,this.getTagsForStencil(f,"ecs","aws amazon web service compute").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".eks;",a,e,"Amazon EKS",null,null,null,this.getTagsForStencil(f,"eks","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lightsail;",a,e+10,"Amazon Lightsail",null,null,null,this.getTagsForStencil(f,"lightsail","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".batch;",a,e,"AWS Batch",null,null,null,this.getTagsForStencil(f,"batch","aws amazon web service compute").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_beanstalk;",a,e+10,"AWS Elastic Beanstalk",null,null,null,this.getTagsForStencil(f,"elastic beanstalk","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".fargate;",a,e,"AWS Fargate",null,null,null,this.getTagsForStencil(f,"fargate","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lambda;",a,e,"AWS Lambda",null,null,null,this.getTagsForStencil(f,
+"lambda","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".serverless_application_repository;",a,e+35,"AWS Serverless Application Repository",null,null,null,this.getTagsForStencil(f,"serverless application repository","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_load_balancing;",a,e+10,"Elastic Load Balancing",null,null,null,this.getTagsForStencil(f,"elastic load balancing","aws amazon web service compute").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".application_load_balancer;",a,e+10,"Application Load Balancer",null,null,null,this.getTagsForStencil(f,"application load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".classic_load_balancer;",a,e+10,"Classic Load Balancer",null,null,null,this.getTagsForStencil(f,"classic load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".network_load_balancer;",a,e+10,"Network Load Balancer",null,null,null,this.getTagsForStencil(f,"network load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".vmware_cloud_on_aws;",a,e+10,"VMware Cloud on AWS",null,null,null,this.getTagsForStencil(f,"vmware cloud on","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ami;",d,d,"AMI",null,null,null,this.getTagsForStencil(f,"ami",
+"aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".auto_scaling;",d,d,"Auto Scaling",null,null,null,this.getTagsForStencil(f,"auto scaling","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_on_instance;",d,d,"DB on\nInstance",null,null,null,this.getTagsForStencil(f,"db on instance database","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".elastic_ip_address;",d,d,"Elastic IP\nAddress",null,null,null,this.getTagsForStencil(f,"elastic ip address internet protocol","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instance_with_cloudwatch;",d,d,"Instance with\nCloudWatch",null,null,null,this.getTagsForStencil(f,"instance with cloudwatch","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instance;",d,d,"Instance",null,null,
+null,this.getTagsForStencil(f,"instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instances;",d,d,"Instances",null,null,null,this.getTagsForStencil(f,"instances","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".optimized_instance;",d,d,"Optimized\nInstance",null,null,null,this.getTagsForStencil(f,"optimized_instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".rescue;",d,d,"Rescue",null,null,null,this.getTagsForStencil(f,"rescue","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".spot_instance;",d,d,"Spot Instance",null,null,null,this.getTagsForStencil(f,"spot instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".x1_instance;",d,d,"X1 Instance",null,null,null,this.getTagsForStencil(f,"x1 instance","aws amazon web service compute").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".registry;",d,d,"Registry",null,null,null,this.getTagsForStencil(f,"registry","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_1;",d,d,"Container 1",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_2;",d,d,"Container 2",null,null,null,this.getTagsForStencil(f,
+"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_3;",d,d,"Container 3",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".application;",d,d,"Application",null,null,null,this.getTagsForStencil(f,"application","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".deployment;",
+d,d,"Deployment",null,null,null,this.getTagsForStencil(f,"deployment","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lambda_function;",d,d,"Lambda\nFunction",null,null,null,this.getTagsForStencil(f,"lambda function","aws amazon web service compute").join(" "))])};Sidebar.prototype.addAWS4CustomerEngagementPalette=function(a,e,d,b,c,f,g){b="gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;"+b;c="strokeColor=#3334B9;"+c;this.addPaletteFunctions("aws4Customer Engagement",
+"AWS / Customer Engagement",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".connect;",a,e+10,"Amazon Connect",null,null,null,this.getTagsForStencil(f,"connect","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".pinpoint;",a,e+10,"Amazon Pinpoint",null,null,null,this.getTagsForStencil(f,"pinpoint","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".simple_email_service;",
+a,e+10,"Amazon Simple Email Service",null,null,null,this.getTagsForStencil(f,"simple email service","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".email;",d,d,"Email",null,null,null,this.getTagsForStencil(f,"email","aws amazon web service customer engagement").join(" "))])};Sidebar.prototype.addAWS4DatabasePalette=function(a,e,d,b,c,f,g){b="gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;"+b;c="strokeColor=#3334B9;"+
+c;this.addPaletteFunctions("aws4Database","AWS / Database",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".aurora;",a,e+10,"Amazon\nAurora",null,null,null,this.getTagsForStencil(f,"aurora","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".dynamodb;",a,e+10,"Amazon DynamoDB",null,null,null,this.getTagsForStencil(f,"dynamodb","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".elasticache;",a,e+10,"Amazon ElastiCache",null,null,null,this.getTagsForStencil(f,"elasticache","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache_for_memcached;",a,e+20,"Amazon ElastiCache for Memcached",null,null,null,this.getTagsForStencil(f,"elasticache for memcached","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache_for_redis;",a,e+20,"Amazon ElastiCache for Redis",
+null,null,null,this.getTagsForStencil(f,"elasticache for redis","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".neptune;",a,e+10,"Amazon Neptune",null,null,null,this.getTagsForStencil(f,"neptune","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rds;",a,e,"Amazon RDS",null,null,null,this.getTagsForStencil(f,"rds","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".redshift;",a,e+10,"Amazon Redshift",null,null,null,this.getTagsForStencil(f,"redshift","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".database_migration_service;",a,e+20,"AWS Database Migration Service",null,null,null,this.getTagsForStencil(f,"db database migration service","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".attribute;",d,d,"Attribute",null,
+null,null,this.getTagsForStencil(f,"attribute","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".attributes;",d,d,"Attributes",null,null,null,this.getTagsForStencil(f,"attributes","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".item;",d,d,"Item",null,null,null,this.getTagsForStencil(f,"item","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".items;",d,d,"Items",null,null,null,this.getTagsForStencil(f,"items","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".global_secondary_index;",d,d,"Global\nsecondary\nindex",null,null,null,this.getTagsForStencil(f,"global secondary index","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".table;",d,d,"Table",null,null,null,this.getTagsForStencil(f,"table","aws amazon web service db database").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cache_node;",d,d,"Cache node",null,null,null,this.getTagsForStencil(f,"cache node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance;",d,d,"DB instance",null,null,null,this.getTagsForStencil(f,"db instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance_standby;",d,d,"DB instance\nstandby",null,
+null,null,this.getTagsForStencil(f,"db instance standby","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance_read_replica;",d,d,"DB instance\nread replica",null,null,null,this.getTagsForStencil(f,"db instance read replica","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".piop;",d,d,"PIOP",null,null,null,this.getTagsForStencil(f,"piop","aws amazon web service db database").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ms_sql_instance;",d,d,"MS SQL\ninstance",null,null,null,this.getTagsForStencil(f,"ms sql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ms_sql_instance_alternate;",d,d,"MS SQL\ninstance\nalternate",null,null,null,this.getTagsForStencil(f,"ms sql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mysql_db_instance;",
+d,d,"MySQL DB \ninstance",null,null,null,this.getTagsForStencil(f,"mysql db database instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mysql_db_instance_alternate;",d,d,"MySQL DB \ninstance\nalternate",null,null,null,this.getTagsForStencil(f,"mysql db database instance alternate","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".oracle_db_instance;",d,d,"Oracle DB \ninstance",
+null,null,null,this.getTagsForStencil(f,"oracle db database instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".oracle_db_instance_alternate;",d,d,"Oracle DB \ninstance\nalternate",null,null,null,this.getTagsForStencil(f,"oracle db database instance alternate","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sql_primary;",d,d,"SQL primary",null,null,null,this.getTagsForStencil(f,
+"sql primary","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sql_replica;",d,d,"SQL replica",null,null,null,this.getTagsForStencil(f,"sql replica","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".postgresql_instance;",d,d,"PostgreSQL\ninstance",null,null,null,this.getTagsForStencil(f,"postresql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".dense_compute_node;",d,d,"Dense\ncompute node",null,null,null,this.getTagsForStencil(f,"dense compute node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_storage_node;",d,d,"Dense\nstorage node",null,null,null,this.getTagsForStencil(f,"dense storage node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".database_migration_workflow_job;",d,d,
+"Database\nmigration\nworkflow/job",null,null,null,this.getTagsForStencil(f,"database migration workflow job","aws amazon web service db database").join(" "))])};Sidebar.prototype.addAWS4DesktopAppStreamingPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Desktop App Streaming","AWS / Desktop & App Streaming",!1,[this.createVertexTemplateEntry("gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;"+b+"productIcon;prIcon="+f+".appstream_20;",a,e+10,"Amazon AppStream 2.0",null,
+null,null,this.getTagsForStencil(f,"appstream","aws amazon web service db database").join(" "))])};Sidebar.prototype.addAWS4DeveloperToolsPalette=function(a,e,d,b,c,f,g){b="gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;"+b;this.addPaletteFunctions("aws4Developer Tools","AWS / Developer Tools",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codestar;",a,e,"AWS CodeStar",null,null,null,this.getTagsForStencil(f,"codestar","aws amazon web service dev developer tools").join(" ")),
 this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloud9;",a,e,"AWS Cloud9",null,null,null,this.getTagsForStencil(f,"cloud9","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codebuild;",a,e+10,"AWS CodeBuild",null,null,null,this.getTagsForStencil(f,"codebuild","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codecommit;",a,e+10,"AWS CodeCommit",null,null,null,
 this.getTagsForStencil(f,"codecommit","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codedeploy;",a,e+10,"AWS CodeDeploy",null,null,null,this.getTagsForStencil(f,"codedeploy","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codepipeline;",a,e+10,"AWS CodePipeline",null,null,null,this.getTagsForStencil(f,"codepipeline","aws amazon web service dev developer tools").join(" ")),
 this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".command_line_interface;",a,e+20,"AWS\nCommand Line Interface",null,null,null,this.getTagsForStencil(f,"command line interface","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".tools_and_sdks;",a,e+10,"AWS Tools and SDKs",null,null,null,this.getTagsForStencil(f,"tools and sdks software development kit","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".xray;",a,e,"AWS X-Ray",null,null,null,this.getTagsForStencil(f,"ray xray","aws amazon web service dev developer tools").join(" "))])};Sidebar.prototype.addAWS4GameDevelopmentPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Game Development","AWS / Game Development",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".gamelift;",a,e+10,"Amazon GameLift",null,null,null,this.getTagsForStencil(f,"gamelift","aws amazon web service game development").join(" "))])};
-Sidebar.prototype.addAWS4InternetOfThingsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Internet of Things","AWS / Internet of Things",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_core;",a,e+10,"Amazon IoT Core",null,null,null,this.getTagsForStencil(f,"core","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".freertos;",a,e+10,"Amazon FreeRTOS",null,null,null,this.getTagsForStencil(f,"freertos free rtos",
-"aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".greengrass;",a,e+10,"AWS Greengrass",null,null,null,this.getTagsForStencil(f,"greengrass","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_1click;",a,e+10,"AWS IoT\n1-Click",null,null,null,this.getTagsForStencil(f,"1click one click","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".iot_analytics;",a,e+10,"AWS IoT Analytics",null,null,null,this.getTagsForStencil(f,"analytics","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_button;",a,e+10,"AWS IoT Button",null,null,null,this.getTagsForStencil(f,"button","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_device_defender;",a,e+20,"AWS IoT Device Defender",null,
-null,null,this.getTagsForStencil(f,"device defender","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_device_management;",a,e+20,"AWS IoT Device Management",null,null,null,this.getTagsForStencil(f,"device management","aws amazon web service internet of things iot").join(" "))])};Sidebar.prototype.addAWS4IOTThingsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4IoT Things","AWS / IoT Things",!1,[this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".bank;",d,d,"Bank",null,null,null,this.getTagsForStencil(f,"bank","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bycicle;",d,d,"Bycicle",null,null,null,this.getTagsForStencil(f,"bycicle","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".camera;",d,d,"Camera",null,null,null,this.getTagsForStencil(f,"camera","aws amazon web service internet of things iot").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".car;",d,d,"Car",null,null,null,this.getTagsForStencil(f,"car","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cart;",d,d,"Cart",null,null,null,this.getTagsForStencil(f,"cart","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".coffee_pot;",d,d,"Coffee Pot",null,null,null,this.getTagsForStencil(f,"coffee pot",
-"aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".door_lock;",d,d,"Door Lock",null,null,null,this.getTagsForStencil(f,"door lock","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".factory;",d,d,"Factory",null,null,null,this.getTagsForStencil(f,"factory","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".generic;",d,d,"Generic",null,null,null,this.getTagsForStencil(f,"generic","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".house;",d,d,"House",null,null,null,this.getTagsForStencil(f,"house","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lightbulb;",d,d,"Lightbulb",null,null,null,this.getTagsForStencil(f,"lightbulb","aws amazon web service internet of things iot").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".medical_emergency;",d,d,"Medical\nEmergency",null,null,null,this.getTagsForStencil(f,"medical emergency","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".police_emergency;",d,d,"Police\nEmergency",null,null,null,this.getTagsForStencil(f,"police emergency","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".thermostat;",d,d,"Thermostat",null,null,null,this.getTagsForStencil(f,"thermostat","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".travel;",d,d,"Travel",null,null,null,this.getTagsForStencil(f,"travel","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".utility;",d,d,"Utility",null,null,null,this.getTagsForStencil(f,"utility","aws amazon web service internet of things iot").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".windfarm;",d,d,"Windfarm",null,null,null,this.getTagsForStencil(f,"windfarm","aws amazon web service internet of things iot").join(" "))])};Sidebar.prototype.addAWS4IOTResourcesPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4IoT Resources","AWS / IoT Resources",!1,[this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".action;",d,d,"Action",null,null,null,this.getTagsForStencil(f,"action","aws amazon web service internet of things iot resources").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".actuator;",d,d,"Actuator",null,null,null,this.getTagsForStencil(f,"actuator","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_enabled_device;",d,d,"Alexa enabled\ndevice",null,null,null,this.getTagsForStencil(f,"alexa enabled device","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".alexa_skill;",d,d,"Alexa skill",null,null,null,this.getTagsForStencil(f,"alexa skill","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_smart_home_skill;",d,d,"Alexa smart\nhome skill",null,null,null,this.getTagsForStencil(f,"alexa smart home skill","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_voice_service;",d,d,"Alexa voice\nservice",
-null,null,null,this.getTagsForStencil(f,"alexa voice service","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".certificate_manager;",d,d,"Certificate\nmanager",null,null,null,this.getTagsForStencil(f,"certificate manager","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".desired_state;",d,d,"Desired state",null,null,null,this.getTagsForStencil(f,
-"desired state","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".echo;",d,d,"Echo",null,null,null,this.getTagsForStencil(f,"echo","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".firetv_stick;",d,d,"FireTV stick",null,null,null,this.getTagsForStencil(f,"firetv fire tv stick","aws amazon web service internet of things iot resources").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".firetv;",d,d,"FireTV",null,null,null,this.getTagsForStencil(f,"firetv fire tv","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hardware_board;",d,d,"Hardware\nboard",null,null,null,this.getTagsForStencil(f,"hardware board","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http2_protocol;",
-d,d,"HTTP/2\nprotocol",null,null,null,this.getTagsForStencil(f,"http2 protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http_protocol;",d,d,"HTTP\nprotocol",null,null,null,this.getTagsForStencil(f,"http protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lambda_function;",d,d,"Lambda Function",null,null,null,this.getTagsForStencil(f,
-"lambda function","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mqtt_protocol;",d,d,"MQTT\nprotocol",null,null,null,this.getTagsForStencil(f,"mqtt protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".policy;",d,d,"Policy",null,null,null,this.getTagsForStencil(f,"policy","aws amazon web service internet of things iot resources").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".reported_state;",d,d,"Reported\nstate",null,null,null,this.getTagsForStencil(f,"reported state","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".rule;",d,d,"Rule",null,null,null,this.getTagsForStencil(f,"rule","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sensor;",d,d,"Sensor",
-null,null,null,this.getTagsForStencil(f,"sensor","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".servo;",d,d,"Servo",null,null,null,this.getTagsForStencil(f,"servo","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".shadow;",d,d,"Shadow",null,null,null,this.getTagsForStencil(f,"shadow","aws amazon web service internet of things iot resources").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".simulator;",d,d,"Simulator",null,null,null,this.getTagsForStencil(f,"simulator","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".topic_2;",d,d,"Topic",null,null,null,this.getTagsForStencil(f,"topic","aws amazon web service internet of things iot resources").join(" "))])};Sidebar.prototype.addAWS4MachineLearningPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Machine Learning",
-"AWS / Machine Learning",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sagemaker;",a,e+10,"Amazon SageMaker",null,null,null,this.getTagsForStencil(f,"sagemaker","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".comprehend;",a,e+10,"Amazon Comprehend",null,null,null,this.getTagsForStencil(f,"comprehend","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lex;",
-a,e,"Amazon Lex",null,null,null,this.getTagsForStencil(f,"lex","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".polly;",a,e,"Amazon Polly",null,null,null,this.getTagsForStencil(f,"polly","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition;",a,e+10,"Amazon Rekognition",null,null,null,this.getTagsForStencil(f,"rekognition","aws amazon web service machine learning").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition_image;",a,e+20,"Amazon Rekognition Image",null,null,null,this.getTagsForStencil(f,"rekognition image","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition_video;",a,e+20,"Amazon Rekognition Video",null,null,null,this.getTagsForStencil(f,"rekognition video","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".translate;",a,e+10,"Amazon Translate",null,null,null,this.getTagsForStencil(f,"translate","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".transcribe;",a,e+10,"Amazon Transcribe",null,null,null,this.getTagsForStencil(f,"transcribe","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".deep_learning_amis;",a,e+10,"AWS Deep Learning AMIs",null,null,null,this.getTagsForStencil(f,
-"deep learning amis","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".deeplens;",a,e,"AWS DeepLens",null,null,null,this.getTagsForStencil(f,"deeplens","aws amazon web service machine learning").join(" "))])};Sidebar.prototype.addAWS4ManagementToolsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Management Tools","AWS / Management Tools",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudwatch;",a,e+10,"Amazon CloudWatch",
-null,null,null,this.getTagsForStencil(f,"cloudwatch","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".autoscaling;",a,e+10,"AWS Auto Scaling",null,null,null,this.getTagsForStencil(f,"auto scaling","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudformation;",a,e+10,"AWS CloudFormation",null,null,null,this.getTagsForStencil(f,"cloudformation","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudtrail;",a,e+10,"AWS\nCloudTrail",null,null,null,this.getTagsForStencil(f,"cloudtrail","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".command_line_interface;",a,e+20,"AWS\nCommand Line Interface",null,null,null,this.getTagsForStencil(f,"command line interface","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+
-".config;",a,e,"AWS Config",null,null,null,this.getTagsForStencil(f,"config","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".management_console;",a,e+20,"AWS Management Console",null,null,null,this.getTagsForStencil(f,"management console","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".managed_services;",a,e+10,"AWS Managed Services",null,null,null,this.getTagsForStencil(f,
-"managed services","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".opsworks;",a,e+10,"AWS OpsWorks",null,null,null,this.getTagsForStencil(f,"opsworks","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".service_catalog;",a,e+10,"AWS Service Catalog",null,null,null,this.getTagsForStencil(f,"service catalog","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".personal_health_dashboard;",a,e+20,"AWS Personal Health Dashboard",null,null,null,this.getTagsForStencil(f,"personal health dashboard","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".systems_manager;",a,e+10,"AWS Systems Manager",null,null,null,this.getTagsForStencil(f,"systems manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".trusted_advisor;",
-a,e+10,"AWS Trusted Advisor",null,null,null,this.getTagsForStencil(f,"trusted advisor","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".marketplace;",a,e+10,"AWS Marketplace",null,null,null,this.getTagsForStencil(f,"marketplace","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alarm;",d,d,"Alarm",null,null,null,this.getTagsForStencil(f,"alarm","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".event_event_based;",d,d,"Event (event-\nbased)",null,null,null,this.getTagsForStencil(f,"event event based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".event_time_based;",d,d,"Event (time-\nbased)",null,null,null,this.getTagsForStencil(f,"event time based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+
-".rule_2;",d,d,"Rule",null,null,null,this.getTagsForStencil(f,"rule","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".change_set;",d,d,"Change set",null,null,null,this.getTagsForStencil(f,"change set","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".stack;",d,d,"Stack",null,null,null,this.getTagsForStencil(f,"stack","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".template;",d,d,"Template",null,null,null,this.getTagsForStencil(f,"template","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".apps;",d,d,"Apps",null,null,null,this.getTagsForStencil(f,"apps","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".deployments;",d,d,"Deployments",null,null,null,this.getTagsForStencil(f,
-"deployments","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instances_2;",d,d,"Instances",null,null,null,this.getTagsForStencil(f,"instances","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".layers;",d,d,"Layers",null,null,null,this.getTagsForStencil(f,"layers","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".monitoring;",d,d,"Monitoring",null,null,null,this.getTagsForStencil(f,"monitoring","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".permissions;",d,d,"Permissions",null,null,null,this.getTagsForStencil(f,"permissions","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".resources;",d,d,"Resources",null,null,null,this.getTagsForStencil(f,"resources","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".stack2;",d,d,"Stack2",null,null,null,this.getTagsForStencil(f,"stack stack2","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".automation;",d,d,"Automation",null,null,null,this.getTagsForStencil(f,"automation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".documents;",d,d,"Documents",null,null,null,this.getTagsForStencil(f,
-"documents","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".inventory;",d,d,"Inventory",null,null,null,this.getTagsForStencil(f,"inventory","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".maintenance_windows;",d,d,"Maintenance\nwindows",null,null,null,this.getTagsForStencil(f,"maintenance windows","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".parameter_store;",d,d,"Parameter\nStore",null,null,null,this.getTagsForStencil(f,"parameter store","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".patch_manager;",d,d,"Patch\nmanager",null,null,null,this.getTagsForStencil(f,"patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".patch_manager;",d,d,"Patch\nmanager",null,null,null,
-this.getTagsForStencil(f,"patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".run_command;",d,d,"Run\ncommand",null,null,null,this.getTagsForStencil(f,"run command","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".state_manager;",d,d,"State\nmanager",null,null,null,this.getTagsForStencil(f,"state manager","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_cost;",d,d,"Checklist cost",null,null,null,this.getTagsForStencil(f,"checklist cost","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_fault_tolerant;",d,d,"Checklist fault\ntolerant",null,null,null,this.getTagsForStencil(f,"checklist fault tolerant","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".checklist_performance;",d,d,"Checklist\nperformance",null,null,null,this.getTagsForStencil(f,"checklist performance","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_security;",d,d,"Checklist\nsecurity",null,null,null,this.getTagsForStencil(f,"checklist security","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist;",d,d,"Checklist",null,null,null,
-this.getTagsForStencil(f,"checklist","aws amazon web service management tools").join(" "))])};Sidebar.prototype.addAWS4MediaServicesPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Media Services","AWS / Media Services",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_transcoder;",a,e+10,"Amazon Elastic Transcoder",null,null,null,this.getTagsForStencil(f,"elastic transcoder","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".kinesis_video_streams;",a,e+20,"Amazon Kinesis Video Streams",null,null,null,this.getTagsForStencil(f,"kinesis video streams","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediaconvert;",a,e+10,"AWS Elemental MediaConvert",null,null,null,this.getTagsForStencil(f,"elemental mediaconvert","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_medialive;",a,
-e+10,"AWS Elemental MediaLive",null,null,null,this.getTagsForStencil(f,"elemental medialive","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediapackage;",a,e+10,"AWS Elemental MediaPackage",null,null,null,this.getTagsForStencil(f,"elemental mediapackage","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediastore;",a,e+10,"AWS Elemental MediaStore",null,
-null,null,this.getTagsForStencil(f,"elemental mediastore","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediatailor;",a,e+10,"AWS Elemental MediaTailor",null,null,null,this.getTagsForStencil(f,"elemental mediatailor","aws amazon web service media services").join(" "))])};Sidebar.prototype.addAWS4MigrationPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Migration","AWS / Migration",!1,[this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".migration_hub;",a,e+10,"AWS Migration Hub",null,null,null,this.getTagsForStencil(f,"migration hub","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".application_discovery_service;",a,e+35,"AWS Application Discovery Service",null,null,null,this.getTagsForStencil(f,"application discovery service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".database_migration_service;",
-a,e+20,"AWS Database Migration Service",null,null,null,this.getTagsForStencil(f,"db database migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".server_migration_service;",a,e+20,"AWS Server Migration Service",null,null,null,this.getTagsForStencil(f,"server migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball;",a,e,"AWS Snowball",null,null,null,
-this.getTagsForStencil(f,"snowball","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball_edge;",a,e+10,"AWS Snowball Edge",null,null,null,this.getTagsForStencil(f,"snowball edge","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowmobile;",a,e+10,"AWS Snowmobile",null,null,null,this.getTagsForStencil(f,"snowmobile","aws amazon web service migration").join(" "))])};Sidebar.prototype.addAWS4MobileServicesPalette=
-function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Mobile Services","AWS / Mobile Services",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".appsync;",a,e,"AWS AppSync",null,null,null,this.getTagsForStencil(f,"appsync","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".api_gateway;",a,e+10,"Amazon API Gateway",null,null,null,this.getTagsForStencil(f,"api gateway application programming interface","aws amazon web service mobile services").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".device_farm;",a,e+10,"AWS Device Farm",null,null,null,this.getTagsForStencil(f,"device farm","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".mobile_hub;",a,e+10,"AWS Mobile Hub",null,null,null,this.getTagsForStencil(f,"mobile hub","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".pinpoint;",a,e+10,"Amazon Pinpoint",
-null,null,null,this.getTagsForStencil(f,"pinpoint","aws amazon web service mobile services").join(" "))])};Sidebar.prototype.addAWS4NetworkContentDeliveryPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Network Content Delivery","AWS / Network & Content Delivery",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".vpc;",a,e,"Amazon VPC",null,null,null,this.getTagsForStencil(f,"vpc virtual private cloud","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".xray;",a,e,"AWS X-Ray",null,null,null,this.getTagsForStencil(f,"ray xray","aws amazon web service dev developer tools").join(" "))])};Sidebar.prototype.addAWS4GameDevelopmentPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Game Development","AWS / Game Development",!1,[this.createVertexTemplateEntry("gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;"+b+"productIcon;prIcon="+f+".gamelift;",a,e+10,"Amazon GameLift",null,null,null,this.getTagsForStencil(f,
+"gamelift","aws amazon web service game development").join(" "))])};Sidebar.prototype.addAWS4InternetOfThingsPalette=function(a,e,d,b,c,f,g){b="gradientColor=#60A337;gradientDirection=north;fillColor=#277116;"+b;this.addPaletteFunctions("aws4Internet of Things","AWS / Internet of Things",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_core;",a,e+10,"Amazon IoT Core",null,null,null,this.getTagsForStencil(f,"core","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".freertos;",a,e+10,"Amazon FreeRTOS",null,null,null,this.getTagsForStencil(f,"freertos free rtos","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".greengrass;",a,e+10,"AWS Greengrass",null,null,null,this.getTagsForStencil(f,"greengrass","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_1click;",a,e+10,"AWS IoT\n1-Click",null,null,null,
+this.getTagsForStencil(f,"1click one click","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_analytics;",a,e+10,"AWS IoT Analytics",null,null,null,this.getTagsForStencil(f,"analytics","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_button;",a,e+10,"AWS IoT Button",null,null,null,this.getTagsForStencil(f,"button","aws amazon web service internet of things iot").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_device_defender;",a,e+20,"AWS IoT Device Defender",null,null,null,this.getTagsForStencil(f,"device defender","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_device_management;",a,e+20,"AWS IoT Device Management",null,null,null,this.getTagsForStencil(f,"device management","aws amazon web service internet of things iot").join(" "))])};Sidebar.prototype.addAWS4IOTThingsPalette=
+function(a,e,d,b,c,f,g){c="strokeColor=#277116;"+c;this.addPaletteFunctions("aws4IoT Things","AWS / IoT Things",!1,[this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bank;",d,d,"Bank",null,null,null,this.getTagsForStencil(f,"bank","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bycicle;",d,d,"Bycicle",null,null,null,this.getTagsForStencil(f,"bycicle","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".camera;",d,d,"Camera",null,null,null,this.getTagsForStencil(f,"camera","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".car;",d,d,"Car",null,null,null,this.getTagsForStencil(f,"car","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cart;",d,d,"Cart",null,null,null,this.getTagsForStencil(f,"cart","aws amazon web service internet of things iot").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".coffee_pot;",d,d,"Coffee Pot",null,null,null,this.getTagsForStencil(f,"coffee pot","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".door_lock;",d,d,"Door Lock",null,null,null,this.getTagsForStencil(f,"door lock","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".factory;",d,d,"Factory",null,null,null,
+this.getTagsForStencil(f,"factory","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".generic;",d,d,"Generic",null,null,null,this.getTagsForStencil(f,"generic","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".house;",d,d,"House",null,null,null,this.getTagsForStencil(f,"house","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".lightbulb;",d,d,"Lightbulb",null,null,null,this.getTagsForStencil(f,"lightbulb","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".medical_emergency;",d,d,"Medical\nEmergency",null,null,null,this.getTagsForStencil(f,"medical emergency","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".police_emergency;",d,d,"Police\nEmergency",null,
+null,null,this.getTagsForStencil(f,"police emergency","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".thermostat;",d,d,"Thermostat",null,null,null,this.getTagsForStencil(f,"thermostat","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".travel;",d,d,"Travel",null,null,null,this.getTagsForStencil(f,"travel","aws amazon web service internet of things iot").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".utility;",d,d,"Utility",null,null,null,this.getTagsForStencil(f,"utility","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".windfarm;",d,d,"Windfarm",null,null,null,this.getTagsForStencil(f,"windfarm","aws amazon web service internet of things iot").join(" "))])};Sidebar.prototype.addAWS4IOTResourcesPalette=function(a,e,d,b,c,f,g){c="strokeColor=#277116;"+c;this.addPaletteFunctions("aws4IoT Resources",
+"AWS / IoT Resources",!1,[this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".action;",d,d,"Action",null,null,null,this.getTagsForStencil(f,"action","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".actuator;",d,d,"Actuator",null,null,null,this.getTagsForStencil(f,"actuator","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_enabled_device;",
+d,d,"Alexa enabled\ndevice",null,null,null,this.getTagsForStencil(f,"alexa enabled device","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_skill;",d,d,"Alexa skill",null,null,null,this.getTagsForStencil(f,"alexa skill","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_smart_home_skill;",d,d,"Alexa smart\nhome skill",null,null,
+null,this.getTagsForStencil(f,"alexa smart home skill","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_voice_service;",d,d,"Alexa voice\nservice",null,null,null,this.getTagsForStencil(f,"alexa voice service","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".certificate_manager;",d,d,"Certificate\nmanager",null,null,null,this.getTagsForStencil(f,
+"certificate manager","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".desired_state;",d,d,"Desired state",null,null,null,this.getTagsForStencil(f,"desired state","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".echo;",d,d,"Echo",null,null,null,this.getTagsForStencil(f,"echo","aws amazon web service internet of things iot resources").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".firetv_stick;",d,d,"FireTV stick",null,null,null,this.getTagsForStencil(f,"firetv fire tv stick","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".firetv;",d,d,"FireTV",null,null,null,this.getTagsForStencil(f,"firetv fire tv","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hardware_board;",
+d,d,"Hardware\nboard",null,null,null,this.getTagsForStencil(f,"hardware board","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http2_protocol;",d,d,"HTTP/2\nprotocol",null,null,null,this.getTagsForStencil(f,"http2 protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http_protocol;",d,d,"HTTP\nprotocol",null,null,null,this.getTagsForStencil(f,
+"http protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lambda_function;",d,d,"Lambda Function",null,null,null,this.getTagsForStencil(f,"lambda function","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mqtt_protocol;",d,d,"MQTT\nprotocol",null,null,null,this.getTagsForStencil(f,"mqtt protocol","aws amazon web service internet of things iot resources").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".policy;",d,d,"Policy",null,null,null,this.getTagsForStencil(f,"policy","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".reported_state;",d,d,"Reported\nstate",null,null,null,this.getTagsForStencil(f,"reported state","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".rule;",d,d,
+"Rule",null,null,null,this.getTagsForStencil(f,"rule","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sensor;",d,d,"Sensor",null,null,null,this.getTagsForStencil(f,"sensor","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".servo;",d,d,"Servo",null,null,null,this.getTagsForStencil(f,"servo","aws amazon web service internet of things iot resources").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".shadow;",d,d,"Shadow",null,null,null,this.getTagsForStencil(f,"shadow","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".simulator;",d,d,"Simulator",null,null,null,this.getTagsForStencil(f,"simulator","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".topic_2;",d,d,"Topic",null,
+null,null,this.getTagsForStencil(f,"topic","aws amazon web service internet of things iot resources").join(" "))])};Sidebar.prototype.addAWS4MachineLearningPalette=function(a,e,d,b,c,f,g){b="gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;"+b;this.addPaletteFunctions("aws4Machine Learning","AWS / Machine Learning",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sagemaker;",a,e+10,"Amazon SageMaker",null,null,null,this.getTagsForStencil(f,"sagemaker","aws amazon web service machine learning").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".comprehend;",a,e+10,"Amazon Comprehend",null,null,null,this.getTagsForStencil(f,"comprehend","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lex;",a,e,"Amazon Lex",null,null,null,this.getTagsForStencil(f,"lex","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".polly;",a,e,"Amazon Polly",null,null,null,this.getTagsForStencil(f,
+"polly","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition;",a,e+10,"Amazon Rekognition",null,null,null,this.getTagsForStencil(f,"rekognition","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition_image;",a,e+20,"Amazon Rekognition Image",null,null,null,this.getTagsForStencil(f,"rekognition image","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".rekognition_video;",a,e+20,"Amazon Rekognition Video",null,null,null,this.getTagsForStencil(f,"rekognition video","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".translate;",a,e+10,"Amazon Translate",null,null,null,this.getTagsForStencil(f,"translate","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".transcribe;",a,e+10,"Amazon Transcribe",null,
+null,null,this.getTagsForStencil(f,"transcribe","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".deep_learning_amis;",a,e+10,"AWS Deep Learning AMIs",null,null,null,this.getTagsForStencil(f,"deep learning amis","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".deeplens;",a,e,"AWS DeepLens",null,null,null,this.getTagsForStencil(f,"deeplens","aws amazon web service machine learning").join(" "))])};
+Sidebar.prototype.addAWS4ManagementToolsPalette=function(a,e,d,b,c,f,g){b="gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;"+b;c="strokeColor=#BC1356;"+c;this.addPaletteFunctions("aws4Management Tools","AWS / Management Tools",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudwatch;",a,e+10,"Amazon CloudWatch",null,null,null,this.getTagsForStencil(f,"cloudwatch","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".autoscaling;",a,e+10,"AWS Auto Scaling",null,null,null,this.getTagsForStencil(f,"auto scaling","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudformation;",a,e+10,"AWS CloudFormation",null,null,null,this.getTagsForStencil(f,"cloudformation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudtrail;",a,e+10,"AWS\nCloudTrail",null,null,null,this.getTagsForStencil(f,
+"cloudtrail","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".command_line_interface;",a,e+20,"AWS\nCommand Line Interface",null,null,null,this.getTagsForStencil(f,"command line interface","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".config;",a,e,"AWS Config",null,null,null,this.getTagsForStencil(f,"config","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".management_console;",a,e+20,"AWS Management Console",null,null,null,this.getTagsForStencil(f,"management console","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".managed_services;",a,e+10,"AWS Managed Services",null,null,null,this.getTagsForStencil(f,"managed services","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".opsworks;",a,e+10,"AWS OpsWorks",
+null,null,null,this.getTagsForStencil(f,"opsworks","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".service_catalog;",a,e+10,"AWS Service Catalog",null,null,null,this.getTagsForStencil(f,"service catalog","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".personal_health_dashboard;",a,e+20,"AWS Personal Health Dashboard",null,null,null,this.getTagsForStencil(f,"personal health dashboard",
+"aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".systems_manager;",a,e+10,"AWS Systems Manager",null,null,null,this.getTagsForStencil(f,"systems manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".trusted_advisor;",a,e+10,"AWS Trusted Advisor",null,null,null,this.getTagsForStencil(f,"trusted advisor","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".marketplace;",a,e+10,"AWS Marketplace",null,null,null,this.getTagsForStencil(f,"marketplace","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alarm;",d,d,"Alarm",null,null,null,this.getTagsForStencil(f,"alarm","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".event_event_based;",d,d,"Event (event-\nbased)",null,null,null,this.getTagsForStencil(f,
+"event event based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".event_time_based;",d,d,"Event (time-\nbased)",null,null,null,this.getTagsForStencil(f,"event time based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".rule_2;",d,d,"Rule",null,null,null,this.getTagsForStencil(f,"rule","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".change_set;",d,d,"Change set",null,null,null,this.getTagsForStencil(f,"change set","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".stack;",d,d,"Stack",null,null,null,this.getTagsForStencil(f,"stack","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".template;",d,d,"Template",null,null,null,this.getTagsForStencil(f,"template","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".apps;",d,d,"Apps",null,null,null,this.getTagsForStencil(f,"apps","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".deployments;",d,d,"Deployments",null,null,null,this.getTagsForStencil(f,"deployments","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instances_2;",d,d,"Instances",null,null,null,this.getTagsForStencil(f,
+"instances","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".layers;",d,d,"Layers",null,null,null,this.getTagsForStencil(f,"layers","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".monitoring;",d,d,"Monitoring",null,null,null,this.getTagsForStencil(f,"monitoring","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".permissions;",d,d,"Permissions",null,null,null,this.getTagsForStencil(f,"permissions","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".resources;",d,d,"Resources",null,null,null,this.getTagsForStencil(f,"resources","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".stack2;",d,d,"Stack2",null,null,null,this.getTagsForStencil(f,"stack stack2","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".automation;",d,d,"Automation",null,null,null,this.getTagsForStencil(f,"automation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".documents;",d,d,"Documents",null,null,null,this.getTagsForStencil(f,"documents","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".inventory;",d,d,"Inventory",null,null,null,this.getTagsForStencil(f,
+"inventory","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".maintenance_windows;",d,d,"Maintenance\nwindows",null,null,null,this.getTagsForStencil(f,"maintenance windows","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".parameter_store;",d,d,"Parameter\nStore",null,null,null,this.getTagsForStencil(f,"parameter store","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".patch_manager;",d,d,"Patch\nmanager",null,null,null,this.getTagsForStencil(f,"patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".patch_manager;",d,d,"Patch\nmanager",null,null,null,this.getTagsForStencil(f,"patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".run_command;",d,d,"Run\ncommand",
+null,null,null,this.getTagsForStencil(f,"run command","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".state_manager;",d,d,"State\nmanager",null,null,null,this.getTagsForStencil(f,"state manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_cost;",d,d,"Checklist cost",null,null,null,this.getTagsForStencil(f,"checklist cost","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_fault_tolerant;",d,d,"Checklist fault\ntolerant",null,null,null,this.getTagsForStencil(f,"checklist fault tolerant","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_performance;",d,d,"Checklist\nperformance",null,null,null,this.getTagsForStencil(f,"checklist performance","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".checklist_security;",d,d,"Checklist\nsecurity",null,null,null,this.getTagsForStencil(f,"checklist security","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist;",d,d,"Checklist",null,null,null,this.getTagsForStencil(f,"checklist","aws amazon web service management tools").join(" "))])};Sidebar.prototype.addAWS4MediaServicesPalette=function(a,e,d,b,c,f,g){b="gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;"+
+b;this.addPaletteFunctions("aws4Media Services","AWS / Media Services",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_transcoder;",a,e+10,"Amazon Elastic Transcoder",null,null,null,this.getTagsForStencil(f,"elastic transcoder","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_video_streams;",a,e+20,"Amazon Kinesis Video Streams",null,null,null,this.getTagsForStencil(f,"kinesis video streams","aws amazon web service media services").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediaconvert;",a,e+10,"AWS Elemental MediaConvert",null,null,null,this.getTagsForStencil(f,"elemental mediaconvert","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_medialive;",a,e+10,"AWS Elemental MediaLive",null,null,null,this.getTagsForStencil(f,"elemental medialive","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".elemental_mediapackage;",a,e+10,"AWS Elemental MediaPackage",null,null,null,this.getTagsForStencil(f,"elemental mediapackage","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediastore;",a,e+10,"AWS Elemental MediaStore",null,null,null,this.getTagsForStencil(f,"elemental mediastore","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediatailor;",a,e+10,
+"AWS Elemental MediaTailor",null,null,null,this.getTagsForStencil(f,"elemental mediatailor","aws amazon web service media services").join(" "))])};Sidebar.prototype.addAWS4MigrationPalette=function(a,e,d,b,c,f,g){b="gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;"+b;this.addPaletteFunctions("aws4Migration","AWS / Migration",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".migration_hub;",a,e+10,"AWS Migration Hub",null,null,null,this.getTagsForStencil(f,"migration hub",
+"aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".application_discovery_service;",a,e+35,"AWS Application Discovery Service",null,null,null,this.getTagsForStencil(f,"application discovery service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".database_migration_service;",a,e+20,"AWS Database Migration Service",null,null,null,this.getTagsForStencil(f,"db database migration service","aws amazon web service migration").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".server_migration_service;",a,e+20,"AWS Server Migration Service",null,null,null,this.getTagsForStencil(f,"server migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball;",a,e,"AWS Snowball",null,null,null,this.getTagsForStencil(f,"snowball","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball_edge;",a,
+e+10,"AWS Snowball Edge",null,null,null,this.getTagsForStencil(f,"snowball edge","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowmobile;",a,e+10,"AWS Snowmobile",null,null,null,this.getTagsForStencil(f,"snowmobile","aws amazon web service migration").join(" "))])};Sidebar.prototype.addAWS4MobileServicesPalette=function(a,e,d,b,c,f,g){b="gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;"+b;this.addPaletteFunctions("aws4Mobile Services",
+"AWS / Mobile Services",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".appsync;",a,e,"AWS AppSync",null,null,null,this.getTagsForStencil(f,"appsync","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".api_gateway;",a,e+10,"Amazon API Gateway",null,null,null,this.getTagsForStencil(f,"api gateway application programming interface","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".device_farm;",a,e+10,"AWS Device Farm",null,null,null,this.getTagsForStencil(f,"device farm","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".mobile_hub;",a,e+10,"AWS Mobile Hub",null,null,null,this.getTagsForStencil(f,"mobile hub","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".pinpoint;",a,e+10,"Amazon Pinpoint",null,null,null,this.getTagsForStencil(f,"pinpoint","aws amazon web service mobile services").join(" "))])};
+Sidebar.prototype.addAWS4NetworkContentDeliveryPalette=function(a,e,d,b,c,f,g){b="gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;"+b;c="strokeColor=#5A30B5;"+c;this.addPaletteFunctions("aws4Network Content Delivery","AWS / Network & Content Delivery",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".vpc;",a,e,"Amazon VPC",null,null,null,this.getTagsForStencil(f,"vpc virtual private cloud","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+
 "productIcon;prIcon="+f+".api_gateway;",a,e+10,"Amazon API Gateway",null,null,null,this.getTagsForStencil(f,"api application programming interface gateway","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudfront;",a,e+10,"Amazon Cloudfront",null,null,null,this.getTagsForStencil(f,"cloudfront","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".privatelink;",
 a,e+10,"AWS PrivateLink",null,null,null,this.getTagsForStencil(f,"privatelink","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".route_53;",a,e+10,"Amazon Route 53",null,null,null,this.getTagsForStencil(f,"route 53","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".direct_connect;",a,e+10,"AWS Direct Connect",null,null,null,this.getTagsForStencil(f,"direct connect",
 "aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".customer_gateway;",d,d,"Customer\ngateway",null,null,null,this.getTagsForStencil(f,"customer gateway","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".elastic_network_adapter;",d,d,"Elastic\nnetwork\nadapter",null,null,null,this.getTagsForStencil(f,"elastic network adapter","aws amazon web service netowrk content delivery").join(" ")),
@@ -4141,26 +4147,27 @@ f+".flow_logs;",d,d,"Flow logs",null,null,null,this.getTagsForStencil(f,"flow lo
 this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".router;",d,d,"Router",null,null,null,this.getTagsForStencil(f,"router","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".vpn_connection;",d,d,"VPN\nConnection",null,null,null,this.getTagsForStencil(f,"vpn virtual private network connection","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".vpn_gateway;",
 d,d,"VPN Gateway",null,null,null,this.getTagsForStencil(f,"vpn virtual private network gateway","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".download_distribution;",d,d,"Download\ndistribution",null,null,null,this.getTagsForStencil(f,"download distribution","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".edge_location;",d,d,"Edge location",null,null,
 null,this.getTagsForStencil(f,"edge location","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".streaming_distribution;",d,d,"Streaming\ndistribution",null,null,null,this.getTagsForStencil(f,"streaming distribution","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hosted_zone;",d,d,"Hosted zone",null,null,null,this.getTagsForStencil(f,"hosted zone","aws amazon web service netowrk content delivery").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".route_table;",d,d,"Route table",null,null,null,this.getTagsForStencil(f,"route table","aws amazon web service netowrk content delivery").join(" "))])};Sidebar.prototype.addAWS4SecurityIdentityCompliancePalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Security Identity Compliance","AWS / Security, Identity & Compliance",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".identity_and_access_management;",a,e+20,"AWS Identity and Access Management",
-null,null,null,this.getTagsForStencil(f,"identity and access management","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cognito;",a,e+10,"Amazon Cognito",null,null,null,this.getTagsForStencil(f,"cognito","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".guardduty;",a,e+10,"Amazon GuardDuty",null,null,null,this.getTagsForStencil(f,"guard duty guardduty",
-"aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".inspector;",a,e+10,"Amazon Inspector",null,null,null,this.getTagsForStencil(f,"inspector","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".artifact;",a,e,"AWS Artifact",null,null,null,this.getTagsForStencil(f,"artifact","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".certificate_manager_3;",a,e+10,"AWS Certificate Manager",null,null,null,this.getTagsForStencil(f,"certificate manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudhsm;",a,e+10,"AWS CloudHSM",null,null,null,this.getTagsForStencil(f,"cloudhsm","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".directory_service;",a,
-e+10,"AWS Directory Service",null,null,null,this.getTagsForStencil(f,"directory service","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".firewall_manager;",a,e+10,"AWS Firewall Manager",null,null,null,this.getTagsForStencil(f,"firewall manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".key_management_service;",a,e+20,"AWS Key Management Service",
-null,null,null,this.getTagsForStencil(f,"key management service","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".secrets_manager;",a,e+10,"AWS Secrets Manager",null,null,null,this.getTagsForStencil(f,"secrets manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".shield;",a,e,"AWS Shield",null,null,null,this.getTagsForStencil(f,"shield","aws amazon web service security identity compliance").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".single_sign_on;",a,e+10,"AWS Single Sign-On",null,null,null,this.getTagsForStencil(f,"single sign on","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".waf;",a,e,"AWS WAF",null,null,null,this.getTagsForStencil(f,"waf","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".addon;",d,d,"Add-on",null,
-null,null,this.getTagsForStencil(f,"addon add on","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sts;",d,d,"AWS STS",null,null,null,this.getTagsForStencil(f,"sts","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sts_alternate;",d,d,"AWS STS\n(alternate)",null,null,null,this.getTagsForStencil(f,"sts alternate","aws amazon web service security identity compliance").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".data_encryption_key;",d,d,"Data\nencryption\nkey",null,null,null,this.getTagsForStencil(f,"data encryption key","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".encrypted_data;",d,d,"Encrypted\ndata",null,null,null,this.getTagsForStencil(f,"encrypted data","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".long_term_security_credential;",d,d,"Long-term\nsecurity\ncredential",null,null,null,this.getTagsForStencil(f,"long term security credential","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mfa_token;",d,d,"MFA Token",null,null,null,this.getTagsForStencil(f,"mfa token","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".permissions;",d,d,"Permissions",
-null,null,null,this.getTagsForStencil(f,"permissions","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".role;",d,d,"Role",null,null,null,this.getTagsForStencil(f,"role","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".temporary_security_credential;",d,d,"Temporary\nsecurity\ncredential",null,null,null,this.getTagsForStencil(f,"temporary security credential",
-"aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".agent;",d,d,"Agent",null,null,null,this.getTagsForStencil(f,"agent","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".certificate_manager_2;",d,d,"Certificate\nmanager",null,null,null,this.getTagsForStencil(f,"certificate manager","aws amazon web service security identity compliance").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".filtering_rule;",d,d,"Filtering rule",null,null,null,this.getTagsForStencil(f,"filtering rule","aws amazon web service security identity compliance").join(" "))])};Sidebar.prototype.addAWS4StoragePalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Storage","AWS / Storage",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".s3;",a,e,"Amazon S3",null,null,null,this.getTagsForStencil(f,"s3","aws amazon web service storage").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_block_store;",a,e+10,"Amazon Elastic Block Store",null,null,null,this.getTagsForStencil(f,"elastic block store","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_file_system;",a,e+10,"Amazon Elastic File System",null,null,null,this.getTagsForStencil(f,"elastic file system","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".glacier;",a,e+10,"Amazon Glacier",null,null,null,this.getTagsForStencil(f,"glacier","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball;",a,e,"AWS Snowball",null,null,null,this.getTagsForStencil(f,"snowball","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball_edge;",a,e+10,"AWS Snowball Edge",null,null,null,this.getTagsForStencil(f,"snowball edge","aws amazon web service storage").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowmobile;",a,e+10,"AWS Snowmobile",null,null,null,this.getTagsForStencil(f,"snowmobile","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".storage_gateway;",a,e+10,"AWS Storage Gateway",null,null,null,this.getTagsForStencil(f,"storage gateway","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bucket;",d,d,"Bucket",null,null,null,
-this.getTagsForStencil(f,"bucket","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".snapshot;",d,d,"Snapshot",null,null,null,this.getTagsForStencil(f,"snapshot","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bucket_with_objects;",d,d,"Bucket with\nobjects",null,null,null,this.getTagsForStencil(f,"bucket with objects","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".volume;",d,d,"Volume",null,null,null,this.getTagsForStencil(f,"volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".object;",d,d,"Object",null,null,null,this.getTagsForStencil(f,"object","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".archive;",d,d,"Archive",null,null,null,this.getTagsForStencil(f,"archive","aws amazon web service storage").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".vault;",d,d,"Vault",null,null,null,this.getTagsForStencil(f,"vault","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".import_export;",d,d,"Import/Export",null,null,null,this.getTagsForStencil(f,"import export","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cached_volume;",d,d,"Cached\nvolume",null,null,null,this.getTagsForStencil(f,
-"cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".non_cached_volume;",d,d,"Non-Cached\nvolume",null,null,null,this.getTagsForStencil(f,"non cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".virtual_tape_library;",d,d,"Virtual tape\nlibrary",null,null,null,this.getTagsForStencil(f,"virtual tape library vtl","aws amazon web service storage").join(" "))])}})();(function(){Sidebar.prototype.addAzurePalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;strokeColor=none;fillColor=#00BEF2;shape=mxgraph.azure.";this.addPaletteFunctions("azure",mxResources.get("azure"),!1,[this.createVertexTemplateEntry(a+"access_control;",50,50,"","Access Control",null,null,this.getTagsForStencil("mxgraph.azure","access_control","").join(" ")),this.createVertexTemplateEntry(a+"automation;",50,
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".route_table;",d,d,"Route table",null,null,null,this.getTagsForStencil(f,"route table","aws amazon web service netowrk content delivery").join(" "))])};Sidebar.prototype.addAWS4SecurityIdentityCompliancePalette=function(a,e,d,b,c,f,g){b="gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;"+b;c="strokeColor=#C7131F;"+c;this.addPaletteFunctions("aws4Security Identity Compliance","AWS / Security, Identity & Compliance",!1,[this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".identity_and_access_management;",a,e+20,"AWS Identity and Access Management",null,null,null,this.getTagsForStencil(f,"identity and access management","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cognito;",a,e+10,"Amazon Cognito",null,null,null,this.getTagsForStencil(f,"cognito","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".guardduty;",a,e+10,"Amazon GuardDuty",null,null,null,this.getTagsForStencil(f,"guard duty guardduty","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".inspector;",a,e+10,"Amazon Inspector",null,null,null,this.getTagsForStencil(f,"inspector","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".artifact;",a,e,"AWS Artifact",null,null,null,this.getTagsForStencil(f,
+"artifact","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".certificate_manager_3;",a,e+10,"AWS Certificate Manager",null,null,null,this.getTagsForStencil(f,"certificate manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudhsm;",a,e+10,"AWS CloudHSM",null,null,null,this.getTagsForStencil(f,"cloudhsm","aws amazon web service security identity compliance").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".directory_service;",a,e+10,"AWS Directory Service",null,null,null,this.getTagsForStencil(f,"directory service","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".firewall_manager;",a,e+10,"AWS Firewall Manager",null,null,null,this.getTagsForStencil(f,"firewall manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".key_management_service;",a,e+20,"AWS Key Management Service",null,null,null,this.getTagsForStencil(f,"key management service","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".secrets_manager;",a,e+10,"AWS Secrets Manager",null,null,null,this.getTagsForStencil(f,"secrets manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".shield;",a,e,"AWS Shield",null,null,null,this.getTagsForStencil(f,"shield","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".single_sign_on;",a,e+10,"AWS Single Sign-On",null,null,null,this.getTagsForStencil(f,"single sign on","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".waf;",a,e,"AWS WAF",null,null,null,this.getTagsForStencil(f,"waf","aws amazon web service security identity compliance").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".addon;",d,d,"Add-on",null,null,null,this.getTagsForStencil(f,"addon add on","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sts;",d,d,"AWS STS",null,null,null,this.getTagsForStencil(f,"sts","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sts_alternate;",d,d,"AWS STS\n(alternate)",null,
+null,null,this.getTagsForStencil(f,"sts alternate","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".data_encryption_key;",d,d,"Data\nencryption\nkey",null,null,null,this.getTagsForStencil(f,"data encryption key","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".encrypted_data;",d,d,"Encrypted\ndata",null,null,null,this.getTagsForStencil(f,"encrypted data",
+"aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".long_term_security_credential;",d,d,"Long-term\nsecurity\ncredential",null,null,null,this.getTagsForStencil(f,"long term security credential","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mfa_token;",d,d,"MFA Token",null,null,null,this.getTagsForStencil(f,"mfa token","aws amazon web service security identity compliance").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".permissions;",d,d,"Permissions",null,null,null,this.getTagsForStencil(f,"permissions","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".role;",d,d,"Role",null,null,null,this.getTagsForStencil(f,"role","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".temporary_security_credential;",d,d,
+"Temporary\nsecurity\ncredential",null,null,null,this.getTagsForStencil(f,"temporary security credential","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".agent;",d,d,"Agent",null,null,null,this.getTagsForStencil(f,"agent","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".certificate_manager_2;",d,d,"Certificate\nmanager",null,null,null,this.getTagsForStencil(f,
+"certificate manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".filtering_rule;",d,d,"Filtering rule",null,null,null,this.getTagsForStencil(f,"filtering rule","aws amazon web service security identity compliance").join(" "))])};Sidebar.prototype.addAWS4StoragePalette=function(a,e,d,b,c,f,g){b="gradientColor=#60A337;gradientDirection=north;fillColor=#277116;"+b;c="strokeColor=#277116;"+c;this.addPaletteFunctions("aws4Storage",
+"AWS / Storage",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".s3;",a,e,"Amazon S3",null,null,null,this.getTagsForStencil(f,"s3","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_block_store;",a,e+10,"Amazon Elastic Block Store",null,null,null,this.getTagsForStencil(f,"elastic block store","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_file_system;",a,e+10,
+"Amazon Elastic File System",null,null,null,this.getTagsForStencil(f,"elastic file system","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".glacier;",a,e+10,"Amazon Glacier",null,null,null,this.getTagsForStencil(f,"glacier","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball;",a,e,"AWS Snowball",null,null,null,this.getTagsForStencil(f,"snowball","aws amazon web service storage").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball_edge;",a,e+10,"AWS Snowball Edge",null,null,null,this.getTagsForStencil(f,"snowball edge","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowmobile;",a,e+10,"AWS Snowmobile",null,null,null,this.getTagsForStencil(f,"snowmobile","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".storage_gateway;",a,e+10,"AWS Storage Gateway",
+null,null,null,this.getTagsForStencil(f,"storage gateway","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bucket;",d,d,"Bucket",null,null,null,this.getTagsForStencil(f,"bucket","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".snapshot;",d,d,"Snapshot",null,null,null,this.getTagsForStencil(f,"snapshot","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".bucket_with_objects;",d,d,"Bucket with\nobjects",null,null,null,this.getTagsForStencil(f,"bucket with objects","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".volume;",d,d,"Volume",null,null,null,this.getTagsForStencil(f,"volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".object;",d,d,"Object",null,null,null,this.getTagsForStencil(f,"object","aws amazon web service storage").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".archive;",d,d,"Archive",null,null,null,this.getTagsForStencil(f,"archive","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".vault;",d,d,"Vault",null,null,null,this.getTagsForStencil(f,"vault","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".import_export;",d,d,"Import/Export",null,null,null,this.getTagsForStencil(f,"import export",
+"aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cached_volume;",d,d,"Cached\nvolume",null,null,null,this.getTagsForStencil(f,"cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".non_cached_volume;",d,d,"Non-Cached\nvolume",null,null,null,this.getTagsForStencil(f,"non cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".virtual_tape_library;",d,d,"Virtual tape\nlibrary",null,null,null,this.getTagsForStencil(f,"virtual tape library vtl","aws amazon web service storage").join(" "))])}})();(function(){Sidebar.prototype.addAzurePalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;strokeColor=none;fillColor=#00BEF2;shape=mxgraph.azure.";this.addPaletteFunctions("azure",mxResources.get("azure"),!1,[this.createVertexTemplateEntry(a+"access_control;",50,50,"","Access Control",null,null,this.getTagsForStencil("mxgraph.azure","access_control","").join(" ")),this.createVertexTemplateEntry(a+"automation;",50,
 45,"","Automation",null,null,this.getTagsForStencil("mxgraph.azure","automation","").join(" ")),this.createVertexTemplateEntry(a+"autoscale;",50,30,"","AutoScale",null,null,this.getTagsForStencil("mxgraph.azure","autoscale","").join(" ")),this.createVertexTemplateEntry(a+"azure_active_directory;",47.5,50,"","Azure Active Directory",null,null,this.getTagsForStencil("mxgraph.azure","azure_active_directory","").join(" ")),this.createVertexTemplateEntry(a+"azure_alert;",50,42.5,"","Azure Alert",null,
 null,this.getTagsForStencil("mxgraph.azure","azure_alert","").join(" ")),this.createVertexTemplateEntry(a+"azure_cache;",45,50,"","Azure Cache",null,null,this.getTagsForStencil("mxgraph.azure","azure_cache","").join(" ")),this.createVertexTemplateEntry(a+"azure_instance;",50,50,"","Azure Instance",null,null,this.getTagsForStencil("mxgraph.azure","azure_instance","").join(" ")),this.createVertexTemplateEntry(a+"azure_load_balancer;",50,35,"","Azure Load Balancer",null,null,this.getTagsForStencil("mxgraph.azure",
 "azure_load_balancer","").join(" ")),this.createVertexTemplateEntry(a+"azure_marketplace;",40,50,"","Azure Marketplace",null,null,this.getTagsForStencil("mxgraph.azure","azure_marketplace","").join(" ")),this.createVertexTemplateEntry(a+"azure_sdk;",50,47.5,"","Azure SDK",null,null,this.getTagsForStencil("mxgraph.azure","azure_sdk","").join(" ")),this.createVertexTemplateEntry(a+"azure_subscription;",50,35,"","Azure Subscription",null,null,this.getTagsForStencil("mxgraph.azure","azure_subscription",
@@ -7431,11 +7438,12 @@ DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled
 DrawioFile.prototype.updateFile=function(a,c,b,d){null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(g){try{null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=g?this.mergeFile(g,a,c,d):this.reloadFile(a,c))}catch(e){null!=c&&c(e)}}),c))};
 DrawioFile.prototype.mergeFile=function(a,c,b,d){var g=!0;try{this.stats.fileMerged++;var e=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),k=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=k&&0<k.length){this.shadowPages=k;this.backupPatch=this.isModified()?this.ui.diffPages(e,this.ui.pages):null;var m=[this.ui.diffPages(null!=d?d:e,this.shadowPages)];if(!this.ignorePatches(m)){var n=this.ui.patchPages(e,
 m[0]);d={};var q=this.ui.getHashValueForPages(n,d),e={},f=this.ui.getHashValueForPages(this.shadowPages,e);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",m,"checksum",f==q,q);if(null!=q&&q!=f){var l=this.compressReportData(this.getAnonymizedXmlForPages(k)),p=this.compressReportData(this.getAnonymizedXmlForPages(n)),t=this.ui.hashValue(a.getCurrentEtag()),u=this.ui.hashValue(this.getCurrentEtag());this.checksumError(b,m,"Shadow Details: "+JSON.stringify(d)+
-"\nChecksum: "+q+"\nCurrent: "+f+"\nCurrent Details: "+JSON.stringify(e)+"\nFrom: "+t+"\nTo: "+u+"\n\nFile Data:\n"+l+"\nPatched Shadow:\n"+p,null,"mergeFile");return}this.patch(m,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(x){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
-null!=b&&b(x);try{this.errorReportsEnabled&&g&&this.sendErrorReport("Error in mergeFile",null,x)}catch(z){}}};DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var c=new mxCodec(mxUtils.createXmlDocument()),b=c.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var g=c.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(g=this.ui.anonymizeNode(g,!0));g.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,g,!0);b.appendChild(g)}return mxUtils.getPrettyXml(b)};
+"\nChecksum: "+q+"\nCurrent: "+f+"\nCurrent Details: "+JSON.stringify(e)+"\nFrom: "+t+"\nTo: "+u+"\n\nFile Data:\n"+l+"\nPatched Shadow:\n"+p,null,"mergeFile");return}this.patch(m,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(v){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+null!=b&&b(v);try{if(g)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,v);else{var x=this.getCurrentUser(),z=null!=x?x.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),z,v)}}catch(y){}}};
+DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var c=new mxCodec(mxUtils.createXmlDocument()),b=c.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var g=c.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(g=this.ui.anonymizeNode(g,!0));g.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,g,!0);b.appendChild(g)}return mxUtils.getPrettyXml(b)};
 DrawioFile.prototype.compressReportData=function(a,c,b){c=null!=c?c:1E4;null!=b&&null!=a&&a.length>b?a=a.substring(0,b)+"[...]":null!=a&&a.length>c&&(a=this.ui.editor.graph.compress(a)+"\n");return a};
 DrawioFile.prototype.checksumError=function(a,c,b,d,g){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=c)for(a=0;a<c.length;a++)this.ui.anonymizePatch(c[a]);var e=mxUtils.bind(this,function(a){var d=this.compressReportData(JSON.stringify(c,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)),
-25E3):"n/a";this.sendErrorReport("Checksum Error in "+g,(null!=b?b:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==d?e(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?e(a):e(null)}),function(){})}}catch(k){}};
+25E3):"n/a";this.sendErrorReport("Checksum Error in "+g,(null!=b?b:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==d?e(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?e(a):e(null)}),function(){})}else{var k=this.getCurrentUser(),m=null!=k?k.id:"unknown";EditorUi.logError("Checksum Error in "+g,null,this.getMode()+"."+this.getId(),m)}}catch(n){}};
 DrawioFile.prototype.sendErrorReport=function(a,c,b,d){try{var g=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),e=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),k=this.getCurrentUser(),m=null!=k?this.ui.hashValue(k.id):"unknown",n=null!=this.sync?this.sync.clientId:"no sync",q=this.getTitle(),f=q.lastIndexOf("."),k="xml";0<f&&(k=q.substring(f));var l=null!=b?b.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+":\n\nBrowser="+
 navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+k+")\nUser="+m+" ("+n+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:"")+(null!=b?"\n\nError: "+
 b.message:"")+"\n\nStack:\n"+l+"\n\nShadow:\n"+g+"\n\nData:\n"+e,d)}catch(p){}};
@@ -7473,7 +7481,8 @@ DrawioFile.prototype.handleConflictError=function(a,c){var b=mxUtils.bind(this,f
 function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,b,d,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),d)});"none"==DrawioFile.SYNC?this.showCopyDialog(b,d,g):this.invalidChecksum?this.showRefreshDialog(b,d,this.getErrorMessage(a)):c?this.showConflictDialog(g,e):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(b,
 d)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null};
 DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()};
-DrawioFile.prototype.fileSaved=function(a,c,b,d){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=b&&b()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),c,b,d,a)}catch(g){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(g);try{this.errorReportsEnabled&&this.sendErrorReport("Error in fileSaved",null,g)}catch(e){}}};
+DrawioFile.prototype.fileSaved=function(a,c,b,d){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=b&&b()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),c,b,d,a)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=d&&d(k);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,k);else{var g=this.getCurrentUser(),e=null!=g?g.id:
+"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),e,k)}}catch(m){}}};
 DrawioFile.prototype.autosave=function(a,c,b,d){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<c?a:0;this.clearAutosave();var g=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==g&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();
 null!=b&&b(a)}),mxUtils.bind(this,function(a){null!=d&&d(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=b&&b(null)}),a);this.autosaveThread=g};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
 DrawioFile.prototype.isAutosaveRevision=function(){var a=(new Date).getTime();return null==this.lastAutosaveRevision||a-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))};
@@ -7493,8 +7502,8 @@ StorageLibrary.prototype.isRenamable=function(a,c,b){return".scratchpad"!=this.t
 var StorageDialog=function(a,c,b){function d(d,p,v,e,g,u){function y(){mxEvent.addListener(B,"click",null!=u?u:function(){v!=App.MODE_GOOGLE||a.isDriveDomain()?v==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(v,q.checked);c()})):v==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(v,q.checked);
 c()})):(a.setMode(v,q.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}var B=document.createElement("a");B.style.overflow="hidden";B.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";B.className="geBaseButton";B.style.boxSizing="border-box";B.style.fontSize="11px";B.style.position="relative";B.style.margin="4px";B.style.padding="8px 10px 12px 10px";B.style.width="88px";B.style.height="100px";B.style.whiteSpace="nowrap";B.setAttribute("title",p);mxClient.IS_QUIRKS&&
 (B.style.cssFloat="left",B.style.zoom="1");var t=document.createElement("div");t.style.textOverflow="ellipsis";t.style.overflow="hidden";if(null!=d){var x=document.createElement("img");x.setAttribute("src",d);x.setAttribute("border","0");x.setAttribute("align","absmiddle");x.style.width="60px";x.style.height="60px";x.style.paddingBottom="6px";B.appendChild(x)}else t.style.paddingTop="5px",t.style.whiteSpace="normal",mxClient.IS_IOS?(B.style.padding="0px 10px 20px 10px",B.style.top="6px"):mxClient.IS_FF&&
-(t.style.paddingTop="0px",t.style.marginTop="-2px");B.appendChild(t);mxUtils.write(t,p);if(null!=g)for(d=0;d<g.length;d++)mxUtils.br(t),mxUtils.write(t,g[d]);if(null!=e&&null==a[e]){x.style.visibility="hidden";mxUtils.setOpacity(t,10);var H=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});H.spin(B);var k=window.setTimeout(function(){null==a[e]&&(H.stop(),B.style.display="none")},3E4);a.addListener("clientLoaded",
-mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(k),mxUtils.setOpacity(t,100),x.style.visibility="",H.stop(),y(),"drive"==e&&null!=l.parentNode&&l.parentNode.removeChild(l))}))}else y();n.appendChild(B);++f>=b&&(mxUtils.br(n),f=0)}b=null!=b?b:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var e=a.addLanguageMenu(g,!0);null!=e&&(e.style.bottom=parseInt("28px")-
+(t.style.paddingTop="0px",t.style.marginTop="-2px");B.appendChild(t);mxUtils.write(t,p);if(null!=g)for(d=0;d<g.length;d++)mxUtils.br(t),mxUtils.write(t,g[d]);if(null!=e&&null==a[e]){x.style.visibility="hidden";mxUtils.setOpacity(t,10);var k=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});k.spin(B);var H=window.setTimeout(function(){null==a[e]&&(k.stop(),B.style.display="none")},3E4);a.addListener("clientLoaded",
+mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(H),mxUtils.setOpacity(t,100),x.style.visibility="",k.stop(),y(),"drive"==e&&null!=l.parentNode&&l.parentNode.removeChild(l))}))}else y();n.appendChild(B);++f>=b&&(mxUtils.br(n),f=0)}b=null!=b?b:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var e=a.addLanguageMenu(g,!0);null!=e&&(e.style.bottom=parseInt("28px")-
 3+"px");if(!a.isOffline()&&1<a.getServiceCount()){e=document.createElement("a");e.setAttribute("href","https://about.draw.io/support/");e.setAttribute("title",mxResources.get("help"));e.setAttribute("target","_blank");e.style.position="absolute";e.style.textDecoration="none";e.style.cursor="pointer";e.style.fontSize="12px";e.style.bottom="28px";e.style.left="26px";e.style.color="gray";var k=document.createElement("img");mxUtils.setOpacity(k,50);k.style.height="16px";k.style.width="16px";k.setAttribute("border",
 "0");k.setAttribute("valign","bottom");k.setAttribute("src",Editor.helpImage);k.style.marginRight="2px";e.appendChild(k);mxUtils.write(e,mxResources.get("help"));g.appendChild(e)}var m=document.createElement("div");m.style.position="absolute";m.style.cursor="pointer";m.style.fontSize="12px";m.style.bottom="28px";m.style.color="gray";mxUtils.write(m,mxResources.get("decideLater"));a.isOfflineApp()?m.style.right="20px":(mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,0)"),m.style.left=
 "50%");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)m.style.marginLeft=-Math.round(m.clientWidth/2)+"px"};g.appendChild(m);mxEvent.addListener(m,"click",function(){a.hideDialog();var b=Editor.useLocalStorage;a.createFile(a.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=b});var n=document.createElement("div");mxClient.IS_QUIRKS&&(n.style.whiteSpace="nowrap",n.style.cssFloat="left");n.style.border="1px solid #d3d3d3";n.style.borderWidth="1px 0px 1px 0px";
@@ -7754,10 +7763,10 @@ l+".svg";return!0}function p(a){function b(a){aa.removeChild(f);F.removeChild(c)
 a.setAttribute("title",mxResources.get("close"));f.appendChild(a);var l=aa.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(c,"click",b);aa.appendChild(f);aa.scrollTop=0;f.style.lineHeight=f.clientHeight+"px"}function t(a,b,c){if(null!=C){for(var f=C.className.split(" "),d=0;d<f.length;d++)if(-1<f[d].indexOf("Active")){f.splice(d,1);break}C.className=f.join(" ")}null!=a?(C=a,C.className+=" "+b,G=c,O.className="geTempDlgCreateBtn"):(G=C=null,O.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")}
 function u(b){if(null!=G){var f=G;G=null;O.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";f.isExternal?(1==b?q(f.url,f,"nameInput.value"):n(f.url,f,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+f.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(c(b.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function x(a){a=a?"":"none";for(var b=F.querySelectorAll(".geTempDlgLinkToDiagram"),c=0;c<b.length;c++)b[c].style.display=
 a}function z(a,b,c){function f(){O.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));x(!b)}U.innerHTML="";t();M=a;var d=null;if(c){d=document.createElement("table");d.className="geTempDlgDiagramsListGrid";var l=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));l.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=
-mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));l.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));l.appendChild(e);d.appendChild(l);U.appendChild(d)}for(l=0;l<a.length;l++){a[l].isExternal=!b;var g=a[l].url,e=mxUtils.htmlEntities(a[l].title),v=a[l].tooltip||a[l].title,y=a[l].imgUrl,B=mxUtils.htmlEntities(a[l].changedBy||""),k=mxUtils.htmlEntities(a[l].lastModifiedOn||
+mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));l.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));l.appendChild(e);d.appendChild(l);U.appendChild(d)}for(l=0;l<a.length;l++){a[l].isExternal=!b;var g=a[l].url,e=mxUtils.htmlEntities(a[l].title),v=a[l].tooltip||a[l].title,y=a[l].imgUrl,k=mxUtils.htmlEntities(a[l].changedBy||""),B=mxUtils.htmlEntities(a[l].lastModifiedOn||
 "");y||(y=TEMPLATE_PATH+"/"+g.substring(0,g.length-4)+".png");g=c?50:15;null!=e&&e.length>g&&(e=e.substring(0,g)+"&hellip;");if(c){var H=document.createElement("tr"),y=document.createElement("td"),m=document.createElement("img");m.src="/images/icon-search.svg";m.className="geTempDlgDiagramListPreviewBtn";m.setAttribute("title",mxResources.get("preview"));y.appendChild(m);v=document.createElement("span");v.className="geTempDlgDiagramTitle";v.innerHTML=e;y.appendChild(v);H.appendChild(y);y=document.createElement("td");
-y.innerHTML=B;H.appendChild(y);y=document.createElement("td");y.innerHTML=k;H.appendChild(y);d.appendChild(H);null==C&&(f(),t(H,"geTempDlgDiagramsListGridActive",a[l]));(function(a,b){mxEvent.addListener(H,"click",function(){C!=b&&(f(),t(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(H,"dblclick",u);mxEvent.addListener(m,"click",function(){p(a)})})(a[l],H)}else{var n=document.createElement("div");n.className="geTempDlgDiagramTile";n.setAttribute("title",v);null==C&&(f(),t(n,"geTempDlgDiagramTileActive",
-a[l]));B=document.createElement("div");B.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var F=document.createElement("img");F.style.display="none";(function(a,b){F.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};F.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(F,B);F.src=y;B.appendChild(F);n.appendChild(B);B=document.createElement("div");B.className="geTempDlgDiagramTileLbl";B.innerHTML=null!=e?e:"";n.appendChild(B);
+y.innerHTML=k;H.appendChild(y);y=document.createElement("td");y.innerHTML=B;H.appendChild(y);d.appendChild(H);null==C&&(f(),t(H,"geTempDlgDiagramsListGridActive",a[l]));(function(a,b){mxEvent.addListener(H,"click",function(){C!=b&&(f(),t(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(H,"dblclick",u);mxEvent.addListener(m,"click",function(){p(a)})})(a[l],H)}else{var n=document.createElement("div");n.className="geTempDlgDiagramTile";n.setAttribute("title",v);null==C&&(f(),t(n,"geTempDlgDiagramTileActive",
+a[l]));k=document.createElement("div");k.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var F=document.createElement("img");F.style.display="none";(function(a,b){F.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};F.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(F,k);F.src=y;k.appendChild(F);n.appendChild(k);k=document.createElement("div");k.className="geTempDlgDiagramTileLbl";k.innerHTML=null!=e?e:"";n.appendChild(k);
 m=document.createElement("img");m.src="/images/icon-search.svg";m.className="geTempDlgDiagramPreviewBtn";m.setAttribute("title",mxResources.get("preview"));n.appendChild(m);(function(a,b){mxEvent.addListener(n,"click",function(){C!=b&&(f(),t(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(n,"dblclick",u);mxEvent.addListener(m,"click",function(){p(a)})})(a[l],n);U.appendChild(n)}}}function v(a,b){ba.innerHTML="";t();for(var c=!b&&5<a.length?5:a.length,f=0;f<c;f++){var d=a[f];d.isCategory=
 !0;var l=document.createElement("div"),e=mxResources.get(d.title);null==e&&(e=d.title.substring(0,1).toUpperCase()+d.title.substring(1));l.className="geTempDlgNewDiagramCatItem";l.setAttribute("title",e);e=mxUtils.htmlEntities(e);15<e.length&&(e=e.substring(0,15)+"&hellip;");null==C&&(O.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),x(),t(l,"geTempDlgNewDiagramCatItemActive",d));var p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemImg";var g=document.createElement("img");
 g.src=NEW_DIAGRAM_CATS_PATH+"/"+d.img;p.appendChild(g);l.appendChild(p);p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemLbl";p.innerHTML=e;l.appendChild(p);ba.appendChild(l);(function(a,b){mxEvent.addListener(l,"click",function(){C!=b&&(O.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),x(),t(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(l,"dblclick",u)})(d,l)}T.style.display=5>a.length?"none":""}function y(a){var b=F.querySelector(".geTemplatesList"),
@@ -7917,7 +7926,7 @@ this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(
 var ErrorDialog=function(a,c,b,d,g,e,k,m,n,q,f){n=null!=n?n:!0;var l=document.createElement("div");l.style.textAlign="center";if(null!=c){var p=document.createElement("div");p.style.padding="0px";p.style.margin="0px";p.style.fontSize="18px";p.style.paddingBottom="16px";p.style.marginBottom="16px";p.style.borderBottom="1px solid #c0c0c0";p.style.color="gray";p.style.whiteSpace="nowrap";p.style.textOverflow="ellipsis";p.style.overflow="hidden";mxUtils.write(p,c);p.setAttribute("title",c);l.appendChild(p)}c=
 document.createElement("div");c.style.padding="6px";c.innerHTML=b;l.appendChild(c);b=document.createElement("div");b.style.marginTop="16px";b.style.textAlign="center";null!=e&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();e()}),c.className="geBtn",b.appendChild(c),b.style.textAlign="center");null!=q&&(q=mxUtils.button(q,function(){null!=f&&f()}),q.className="geBtn",b.appendChild(q));var t=mxUtils.button(d,function(){n&&a.hideDialog();null!=g&&g()});t.className="geBtn";b.appendChild(t);
 null!=k&&(d=mxUtils.button(k,function(){n&&a.hideDialog();null!=m&&m()}),d.className="geBtn gePrimaryBtn",b.appendChild(d));this.init=function(){t.focus()};l.appendChild(b);this.container=l};
-(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,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(a)})();(function(){EditorUi.VERSION="10.1.7";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,d,e){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,d,e);else if(EditorUi.enableLogging)try{if(a!=
+(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,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(a)})();(function(){EditorUi.VERSION="10.1.8";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,d,e){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,d,e);else if(EditorUi.enableLogging)try{if(a!=
 EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var f=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",l=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=l+"/log?severity="+f+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+
 ":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=e&&null!=e.stack?"&stack="+encodeURIComponent(e.stack):"")}}catch(v){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):
 "")}catch(p){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(p){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);
@@ -7963,8 +7972,8 @@ a,p,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body
 mxUtils.getXml(a))})))}else l=f+".svg",u=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();t(a)}),d)}}catch(I){this.handleError(I)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,e,g){var f=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==g?!1:"xmlpng"!=b);var l="",p="";if(f.width*f.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};f="0";"pdf"==b&&0==g&&(p="&allPages=1");if("xmlpng"==b&&
 (f="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=0;g<this.pages.length;g++)if(this.pages[g]==this.currentPage){l="&from="+g;break}g=this.editor.graph.background;"png"==b&&e&&(g=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+l+p+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+d+"&embedXml="+f+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,
 b,c){var d=window.location.hash,f=mxUtils.bind(this,function(c){var f=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<f.length&&(f+="\n"),f+=c);c=new LocalFile(this,"csv"!=a.format&&0<f.length?f:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(f,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));
-if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,l=null,g=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),p()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),p=mxUtils.bind(this,function(){window.clearTimeout(l);
-l=window.setTimeout(g,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){p();g()}));p();g()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,
+if(null!=a.update){var l=null!=a.interval?parseInt(a.interval):6E4,e=null,g=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),p()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),p=mxUtils.bind(this,function(){window.clearTimeout(e);
+e=window.setTimeout(g,l)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){p();g()}));p();g()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var l=a.url;/^https?:\/\//.test(l)&&!this.isCorsEnabledForUrl(l)&&(l=PROXY_URL+"?url="+encodeURIComponent(l));this.loadUrl(l,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,
 a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,c){d.alert(a.tooltip)});return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,e=f.getModel();e.beginUpdate();var g=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var v=e.getCell(a.getAttribute("id"));if(null!=v){try{var y=a.getAttribute("value");if(null!=y){var k=mxUtils.parseXml(y).documentElement;if(null!=k)if("1"==
 k.getAttribute("replace-value"))e.setValue(v,k);else for(var m=k.attributes,n=0;n<m.length;n++)f.setAttributeForCell(v,m[n].nodeName,0<m[n].nodeValue.length?m[n].nodeValue:null)}}catch(K){null!=window.console&&console.log("Error in value for "+v.id+": "+K)}try{var q=a.getAttribute("style");null!=q&&f.model.setStyle(v,q)}catch(K){null!=window.console&&console.log("Error in style for "+v.id+": "+K)}try{var E=a.getAttribute("icon");if(null!=E){var I=0<E.length?JSON.parse(E):null;null!=I&&I.append||f.removeCellOverlays(v);
 null!=I&&f.addCellOverlay(v,b(I))}}catch(K){null!=window.console&&console.log("Error in icon for "+v.id+": "+K)}try{var C=a.getAttribute("geometry");if(null!=C){var C=JSON.parse(C),G=f.getCellGeometry(v);if(null!=G){G=G.clone();for(key in C){var J=parseFloat(C[key]);"dx"==key?G.x+=J:"dy"==key?G.y+=J:"dw"==key?G.width+=J:"dh"==key?G.height+=J:G[key]=parseFloat(C[key])}f.model.setGeometry(v,G)}}}catch(K){null!=window.console&&console.log("Error in icon for "+v.id+": "+K)}}}else if("model"==a.nodeName){for(var A=
@@ -7996,8 +8005,8 @@ g.style.cursor="copy",q.panningManager.stop(),q.autoScroll=!1,null!=q.graphHandl
 q.isMouseDown=!1,q.autoScroll=!0,J(a),mxEvent.consume(a))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="visible",g.style.border="3px solid transparent",g.style.cursor="",q.autoScroll=!0,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!0),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&&
 (mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(a){null!=f?f.style.border="3px dotted rgb(254, 137, 12)":g.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(a){g.style.border="3px solid transparent";g.style.cursor="";null!=f&&(f.style.border="3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,
 0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,l,p,v,y,k,m,t){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,v,y),c)],c[0].vertex=!0,G(c,new mxRectangle(0,0,v,y),a,mxEvent.isAltDown(a)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var u=!1,x=mxUtils.bind(this,function(c,
-d){if(null!=c&&"text/xml"==d){var l=mxUtils.parseXml(c);if("mxlibrary"==l.documentElement.nodeName)try{var p=JSON.parse(mxUtils.getTextContent(l.documentElement));e(p,g);b=b.concat(p);C(a);this.spinner.stop();u=!0}catch(L){}else if("mxfile"==l.documentElement.nodeName)try{for(var v=l.documentElement.getElementsByTagName("diagram"),l=0;l<v.length;l++){var p=mxUtils.getTextContent(v[l]),y=this.stringToCells(this.editor.graph.decompress(p)),k=this.editor.graph.getBoundingBoxFromGeometry(y);G(y,new mxRectangle(0,
-0,k.width,k.height),a)}u=!0}catch(L){null!=window.console&&console.log("error in drop handler:",L)}}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=t&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?this.importVisio(t,function(a){x(a,"text/xml")},null,k):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,k)&&null!=t?this.parseFile(t,
+d){if(null!=c&&"text/xml"==d){var l=mxUtils.parseXml(c);if("mxlibrary"==l.documentElement.nodeName)try{var p=JSON.parse(mxUtils.getTextContent(l.documentElement));e(p,g);b=b.concat(p);C(a);this.spinner.stop();u=!0}catch(L){}else if("mxfile"==l.documentElement.nodeName)try{for(var v=l.documentElement.getElementsByTagName("diagram"),l=0;l<v.length;l++){var p=mxUtils.getTextContent(v[l]),k=this.stringToCells(this.editor.graph.decompress(p)),y=this.editor.graph.getBoundingBoxFromGeometry(k);G(k,new mxRectangle(0,
+0,y.width,y.height),a)}u=!0}catch(L){null!=window.console&&console.log("error in drop handler:",L)}}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=t&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?this.importVisio(t,function(a){x(a,"text/xml")},null,k):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,k)&&null!=t?this.parseFile(t,
 mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(g.style.border="3px solid transparent",g.style.cursor="");a.stopPropagation();a.preventDefault()}));
 m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);m.setAttribute("title",mxResources.get("edit"));k.insertBefore(m,k.firstChild);mxEvent.addListener(m,"click",I);mxEvent.addListener(g,"dblclick",function(a){mxEvent.getSource(a)==g&&I(a)});c=m.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));k.insertBefore(c,k.firstChild);mxEvent.addListener(c,"click",J);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),
 c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),k.insertBefore(c,k.firstChild))}p.appendChild(k);p.style.paddingRight=18*k.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var c=0;c<a.length;c++){var d=a[c],f=d.data;if(null!=f){var f=this.convertDataUri(f),
@@ -8019,7 +8028,7 @@ b,c){var d="jpeg"==c?"jpg":c,f=this.getBaseFilename()+"."+d;a=this.createImageDa
 b){var c=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c.container,620,460,!0,!0);c.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,d,e){if(window.Blob&&navigator.msSaveOrOpenBlob)a=d?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),
 c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var f=document.createElement("a"),l=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof f.download;if(mxClient.IS_GC)var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),l=65==(g?parseInt(g[2],10):!1)?!1:l;if(l||this.isOffline()){f.href=URL.createObjectURL(d?this.base64ToBlob(a,c):new Blob([a],{type:c}));l?f.download=b:f.setAttribute("target","_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)},
 0),f.click(),f.parentNode.removeChild(f)}catch(y){}}else this.createEchoRequest(a,b,c,d,e).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,d,e,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=e?"&format="+e:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(d?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,f=Math.ceil(d/1024),e=Array(f),
-l=0;l<f;++l){for(var g=1024*l,y=Math.min(g+1024,d),k=Array(y-g),m=0;g<y;++m,++g)k[m]=c[g].charCodeAt(0);e[l]=new Uint8Array(k)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,d,e,g,k){g=null!=g?g:!1;k=null!=k?k:"vsdx"!=e&&(!mxClient.IS_IOS||!navigator.standalone);e=this.getServiceCount(g);b=new CreateDialog(this,b,mxUtils.bind(this,function(b,f){try{if("_blank"==f)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var e=window.open("about:blank");
+l=0;l<f;++l){for(var g=1024*l,k=Math.min(g+1024,d),m=Array(k-g),n=0;g<k;++n,++g)m[n]=c[g].charCodeAt(0);e[l]=new Uint8Array(m)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,d,e,g,k){g=null!=g?g:!1;k=null!=k?k:"vsdx"!=e&&(!mxClient.IS_IOS||!navigator.standalone);e=this.getServiceCount(g);b=new CreateDialog(this,b,mxUtils.bind(this,function(b,f){try{if("_blank"==f)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var e=window.open("about:blank");
 null==e?mxUtils.popup(a,!0):(e.document.write(mxUtils.htmlEntities(a,!1)),e.document.close())}else this.openInNewWindow(a,c,d);else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(a,b,c,d):null!=b&&0<b.length&&this.pickFolder(f,mxUtils.bind(this,function(e){try{this.exportFile(a,b,c,d,f,e)}catch(F){this.handleError(F)}}))}catch(H){this.handleError(H)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,k,null,1<e,4<e&&(!g||6>e)?3:4,
 a,c,d);this.showDialog(b.container,420,1==e?160:4<e?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+
 b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var b=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var c=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=
@@ -8110,13 +8119,13 @@ a+";")])):/(\.*<graphml )/.test(a)?(f=!0,this.importGraphML(a,v)):null!=y&&null!
 (l=this.insertTextAt(this.validateFileData(a),c,d,!0,null,n));f||null==m||m(l);return l};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,e,f,g;c<d;){e=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}f=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);
 b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2);b+="=";break}g=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2|(g&192)>>6);b+=
 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,d,e,g,k,m,n,q,H,F){b=null!=b?b:0;c=null!=c?c:0;d=null!=d?d:this.maxImageSize;q=null!=q?q:this.maxImageBytes;var f=null!=b&&null!=c,l=!0,v=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var p=H||this.resampleThreshold,y=0;y<a.length;y++)if("image/"==a[y].type.substring(0,6)&&a[y].size>p){v=!0;break}var t=mxUtils.bind(this,function(){var v=this.editor.graph,p=v.gridSize;
-e=null!=e?e:mxUtils.bind(this,function(a,b,c,d,e,g,l,k,m){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,d,e,g,l,k,m,f,F)});g=null!=g?g:mxUtils.bind(this,function(a){v.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var y=a.length,n=y,t=[],u=mxUtils.bind(this,function(a,b){t[a]=b;if(0==--n){this.spinner.stop();if(null!=m)m(t);else{var c=[];v.getModel().beginUpdate();
-try{for(var d=0;d<t.length;d++){var e=t[d]();null!=e&&(c=c.concat(e))}}finally{v.getModel().endUpdate()}}g(c)}}),x=0;x<y;x++)mxUtils.bind(this,function(f){var g=a[f];if(null!=g){var m=new FileReader;m.onload=mxUtils.bind(this,function(a){if(null==k||k(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var m=a.target.result,y=m.indexOf(","),n=decodeURIComponent(escape(atob(m.substring(y+1)))),t=mxUtils.parseXml(n),n=t.getElementsByTagName("svg");if(0<n.length){var n=n[0],
-x=F?null:n.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?u(f,mxUtils.bind(this,function(){try{if(m.substring(0,y+1),null!=t){var a=t.getElementsByTagName("svg");if(0<a.length){var l=a[0],k=parseFloat(l.getAttribute("width")),n=parseFloat(l.getAttribute("height")),q=l.getAttribute("viewBox");if(null==
-q||0==q.length)l.setAttribute("viewBox","0 0 "+k+" "+n);else if(isNaN(k)||isNaN(n)){var u=q.split(" ");3<u.length&&(k=parseFloat(u[2]),n=parseFloat(u[3]))}m=this.createSvgDataUri(mxUtils.getXml(l));var x=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,n)),B=e(m,g.type,b+f*p,c+f*p,Math.max(1,Math.round(k*x)),Math.max(1,Math.round(n*x)),g.name);if(isNaN(k)||isNaN(n)){var H=new Image;H.onload=mxUtils.bind(this,function(){k=Math.max(1,H.width);n=Math.max(1,H.height);B[0].geometry.width=k;B[0].geometry.height=
-n;l.setAttribute("viewBox","0 0 "+k+" "+n);m=this.createSvgDataUri(mxUtils.getXml(l));var a=m.indexOf(";");0<a&&(m=m.substring(0,a)+m.substring(m.indexOf(",",a+1)));v.setCellStyles("image",m,[B[0]])});H.src=this.createSvgDataUri(mxUtils.getXml(l))}return B}}}catch(pa){}return null})):u(f,mxUtils.bind(this,function(){return e(x,"text/xml",b+f*p,c+f*p,0,0,g.name)}))}else u(f,mxUtils.bind(this,function(){return null}))}else{n=!1;if("image/png"==g.type){var B=F?null:this.extractGraphModelFromPng(a.target.result);
-if(null!=B&&0<B.length){var z=new Image;z.src=a.target.result;u(f,mxUtils.bind(this,function(){return e(B,"text/xml",b+f*p,c+f*p,z.width,z.height,g.name)}));n=!0}}n||(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(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
-a.target.result,mxUtils.bind(this,function(k,m,v){u(f,mxUtils.bind(this,function(){if(null!=k&&k.length<q){var n=l&&this.isResampleImage(a.target.result,H)?Math.min(1,Math.min(d/m,d/v)):1;return e(k,g.type,b+f*p,c+f*p,Math.round(m*n),Math.round(v*n),g.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),l,d,H)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else e(a.target.result,g.type,b+f*p,c+f*p,240,160,g.name,
+e=null!=e?e:mxUtils.bind(this,function(a,b,c,d,e,g,l,k,m){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,d,e,g,l,k,m,f,F)});g=null!=g?g:mxUtils.bind(this,function(a){v.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var n=a.length,y=n,t=[],u=mxUtils.bind(this,function(a,b){t[a]=b;if(0==--y){this.spinner.stop();if(null!=m)m(t);else{var c=[];v.getModel().beginUpdate();
+try{for(var d=0;d<t.length;d++){var e=t[d]();null!=e&&(c=c.concat(e))}}finally{v.getModel().endUpdate()}}g(c)}}),x=0;x<n;x++)mxUtils.bind(this,function(f){var g=a[f];if(null!=g){var m=new FileReader;m.onload=mxUtils.bind(this,function(a){if(null==k||k(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var m=a.target.result,n=m.indexOf(","),y=decodeURIComponent(escape(atob(m.substring(n+1)))),t=mxUtils.parseXml(y),y=t.getElementsByTagName("svg");if(0<y.length){var y=y[0],
+x=F?null:y.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?u(f,mxUtils.bind(this,function(){try{if(m.substring(0,n+1),null!=t){var a=t.getElementsByTagName("svg");if(0<a.length){var l=a[0],k=parseFloat(l.getAttribute("width")),y=parseFloat(l.getAttribute("height")),q=l.getAttribute("viewBox");if(null==
+q||0==q.length)l.setAttribute("viewBox","0 0 "+k+" "+y);else if(isNaN(k)||isNaN(y)){var u=q.split(" ");3<u.length&&(k=parseFloat(u[2]),y=parseFloat(u[3]))}m=this.createSvgDataUri(mxUtils.getXml(l));var x=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,y)),B=e(m,g.type,b+f*p,c+f*p,Math.max(1,Math.round(k*x)),Math.max(1,Math.round(y*x)),g.name);if(isNaN(k)||isNaN(y)){var H=new Image;H.onload=mxUtils.bind(this,function(){k=Math.max(1,H.width);y=Math.max(1,H.height);B[0].geometry.width=k;B[0].geometry.height=
+y;l.setAttribute("viewBox","0 0 "+k+" "+y);m=this.createSvgDataUri(mxUtils.getXml(l));var a=m.indexOf(";");0<a&&(m=m.substring(0,a)+m.substring(m.indexOf(",",a+1)));v.setCellStyles("image",m,[B[0]])});H.src=this.createSvgDataUri(mxUtils.getXml(l))}return B}}}catch(pa){}return null})):u(f,mxUtils.bind(this,function(){return e(x,"text/xml",b+f*p,c+f*p,0,0,g.name)}))}else u(f,mxUtils.bind(this,function(){return null}))}else{y=!1;if("image/png"==g.type){var B=F?null:this.extractGraphModelFromPng(a.target.result);
+if(null!=B&&0<B.length){var z=new Image;z.src=a.target.result;u(f,mxUtils.bind(this,function(){return e(B,"text/xml",b+f*p,c+f*p,z.width,z.height,g.name)}));y=!0}}y||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
+a.target.result,mxUtils.bind(this,function(k,m,v){u(f,mxUtils.bind(this,function(){if(null!=k&&k.length<q){var y=l&&this.isResampleImage(a.target.result,H)?Math.min(1,Math.min(d/m,d/v)):1;return e(k,g.type,b+f*p,c+f*p,Math.round(m*y),Math.round(v*y),g.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),l,d,H)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else e(a.target.result,g.type,b+f*p,c+f*p,240,160,g.name,
 function(a){u(f,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?e(null,g.type,b+f*p,c+f*p,240,160,g.name,function(a){u(f,function(){return a})},g):"image"==g.type.substring(0,5)?m.readAsDataURL(g):m.readAsText(g)}})(x)});v?this.confirmImageResize(function(a){l=a;t()},n):t()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?
 mxSettings.getResizeImages():null,e=function(d,e){if(d||b)mxSettings.setResizeImages(d?e:null),mxSettings.save();c();a(e)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){e(a,!0)},function(a){e(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||
 mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var e=new XMLHttpRequest;e.open("POST",OPEN_URL);e.onreadystatechange=function(){b(e)};e.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,d,e,g){e=null!=e?e:this.maxImageSize;var f=Math.max(1,a.width),l=Math.max(1,a.height);
@@ -8295,8 +8304,8 @@ t=[];break}else if(z.v===DrawioFileSync.PROTOCOL&&null!=z.d)l=z.d.checksum,t.pus
 window.setTimeout(n,this.cacheReadyDelay)}else null!=d&&d()}};DrawioFileSync.prototype.reload=function(a,c,b,d){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),b,d)};
 DrawioFileSync.prototype.merge=function(a,c,b,d,g,e){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;if(!this.file.ignorePatches(a)){for(e=0;e<a.length;e++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages,a[e]);var k=null!=
 c?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentEtag(),"to",b,"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",a,"checksum",c==k,c);if(null!=c&&c!=k){var m=this.ui.hashValue(this.file.getCurrentEtag()),n=this.ui.hashValue(b);this.file.checksumError(g,a,"From: "+m+"\nTo: "+n+"\nChecksum: "+c+"\nCurrent: "+k,b,"merge");return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:
-null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.setCurrentEtag(b);this.file.backupPatch=null;null!=d&&d()}catch(q){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=g&&g(q);try{this.file.errorReportsEnabled&&(m=this.ui.hashValue(this.file.getCurrentEtag()),n=this.ui.hashValue(b),this.file.sendErrorReport("Error in merge","From: "+m+"\nTo: "+n+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)),
-q))}catch(f){}}};
+null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.setCurrentEtag(b);this.file.backupPatch=null;null!=d&&d()}catch(l){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=g&&g(l);try{if(this.file.errorReportsEnabled)m=this.ui.hashValue(this.file.getCurrentEtag()),n=this.ui.hashValue(b),this.file.sendErrorReport("Error in merge","From: "+m+"\nTo: "+n+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)),
+l);else{var q=this.file.getCurrentUser(),f=null!=q?q.id:"unknown";EditorUi.logError("Error in merge",null,this.file.getMode()+"."+this.file.getId(),f,l)}}catch(p){}}};
 DrawioFileSync.prototype.descriptorChanged=function(a){this.lastModified=this.file.getLastModifiedDate();if(null!=this.channelId){var c=this.objectToString(this.createMessage({a:"desc",m:this.lastModified.getTime()})),b=this.file.getCurrentEtag(),d=this.objectToString({});mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(a)+"&to="+encodeURIComponent(b)+"&msg="+encodeURIComponent(c)+"&data="+encodeURIComponent(d));this.file.stats.bytesSent+=d.length;this.file.stats.msgSent++}this.updateStatus()};
 DrawioFileSync.prototype.objectToString=function(a){a=this.ui.editor.graph.compress(JSON.stringify(a));null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.encrypt(a,this.key).toString());return a};DrawioFileSync.prototype.stringToObject=function(a){null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.decrypt(a,this.key).toString(CryptoJS.enc.Utf8));return JSON.parse(this.ui.editor.graph.decompress(a))};
 DrawioFileSync.prototype.fileSaved=function(a,c,b,d){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline()&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId&&this.isConnected())){var g=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);d=this.ui.getHashValueForPages(a);g=this.ui.diffPages(g,a);c=this.file.getDescriptorEtag(c);
@@ -8383,8 +8392,8 @@ a.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret
 !0;this.executeRequest(gapi.client.drive.revisions.update({fileId:l.id,revisionId:l.headRevisionId,resource:a}))}))),EditorUi.logEvent({category:"RT-CONVERT-"+a.convertedFrom,action:"from-"+l.id+"."+l.headRevisionId+"-to-"+a.desc.id+"."+a.desc.headRevisionId+"-",label:null!=this.user?this.user.id:"unknown-user"}))}),B=mxUtils.bind(this,function(b,e){null!=m&&(t.properties=m);var g=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),f=0,l=mxUtils.bind(this,
 function(k){var m=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType;this.executeRequest(this.createUploadRequest(a.getId(),t,b,c||k||m,e,k?null:g,p),y,mxUtils.bind(this,function(b){a.isConflict(b)?this.executeRequest(gapi.client.drive.files.get({fileId:a.getId(),fields:this.catchupFields,supportsTeamDrives:!0}),mxUtils.bind(this,function(c){if(null!=c&&c.etag==g)if(f<this.maxRetries)f++,window.setTimeout(l,2*f*this.coolOff*(1+.1*(Math.random()-
 .5)));else{l(!0);try{EditorUi.sendReport("Warning: Stale Etag Overwrite "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+"."+a.desc.headRevisionId+"\nUser="+(null!=this.user?this.user.id:"unknown")),EditorUi.logError("Warning: Stale Etag Overwrite",null,a.desc.id+"."+a.desc.headRevisionId,null!=this.user?this.user.id:"unknown")}catch(K){}}else null!=d&&d(b,c)}),mxUtils.bind(this,function(){null!=d&&d(b)})):d(b)}))});l(!1)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle())?
-this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){B(a,!0)}),d,this.ui.getCurrentFile()!=a?v:null):B(v,!1)}),f=mxUtils.bind(this,function(){!e&&a.constructor!=DriveLibrary&&this.enableThumbnails&&"0"!=urlParams.thumb&&this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(a){var b=null;if(null!=a)try{b=a.toDataURL("image/png")}catch(t){}b=null==b||b.length>this.maxThumbnailSize?null:b.substring(b.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");q(b,"image/png")}))||q(null,null,
-a.constructor!=DriveLibrary)});g||!c?f():this.verifyMimeType(a.getId(),f,!0)}else this.ui.editor.graph.reset(),null!=d&&d({message:mxResources.get("readOnly")})};
+this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){B(a,!0)}),d,this.ui.getCurrentFile()!=a?v:null):B(v,!1)}),f=mxUtils.bind(this,function(){(e||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=a.desc.mimeType&&"application/vnd.jgraph.mxfile"!=a.desc.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(a){var b=null;if(null!=a)try{b=a.toDataURL("image/png")}catch(t){}b=null==b||b.length>this.maxThumbnailSize?null:b.substring(b.indexOf(",")+
+1).replace(/\+/g,"-").replace(/\//g,"_");q(b,"image/png")})))&&q(null,null,a.constructor!=DriveLibrary)});g||!c?f():this.verifyMimeType(a.getId(),f,!0)}else this.ui.editor.graph.reset(),null!=d&&d({message:mxResources.get("readOnly")})};
 DriveClient.prototype.verifyMimeType=function(a,c,b,d){null==this.lastMimeCheck&&(this.lastMimeCheck=0);var g=(new Date).getTime();if(b||g-this.lastMimeCheck>this.mimeTypeCheckCoolOff)this.lastMimeCheck=g,this.checkingMimeType||(this.checkingMimeType=!0,this.executeRequest(gapi.client.drive.files.get({fileId:a,fields:"mimeType",supportsTeamDrives:!0}),mxUtils.bind(this,function(b){this.checkingMimeType=!1;null!=b&&"application/vnd.jgraph.mxfile.realtime"==b.mimeType?this.redirectToNewApp(d,a):null!=
 c&&c()})))};
 DriveClient.prototype.redirectToNewApp=function(a,c){this.ui.spinner.stop();if(!this.redirectDialogShowing){this.redirectDialogShowing=!0;var b=window.location.protocol+"//"+this.newAppHostname+"/"+this.ui.getSearch("create title mode url drive splash state".split(" "))+"#G"+c,d=mxUtils.bind(this,function(){this.redirectDialogShowing=!1;window.location.href==b?window.location.reload():window.location.href=b});null!=a?this.ui.confirm(mxResources.get("redirectToNewApp"),d,mxUtils.bind(this,function(){this.redirectDialogShowing=
@@ -8558,11 +8567,11 @@ null!=window.DrawDropboxClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.db
 null!=window.DrawOneDriveClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.ONEDRIVE_URL,window.DrawOneDriveClientCallback):"undefined"===typeof window.OneDrive&&(window.OneDriveClient=null);"function"===typeof window.TrelloClient&&"undefined"===typeof window.Trello&&null!=window.DrawTrelloClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==
 urlParams.tr)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL,function(){DrawTrelloClientCallback()})}):"undefined"===typeof window.Trello&&(window.TrelloClient=null)}null!=a&&a(b);"0"!=urlParams.chrome&&"1"==urlParams.test&&(EditorUi.debug("Started in "+((new Date).getTime()-t0.getTime())+"ms"),null!=urlParams["export"]&&EditorUi.debug("Export:",EXPORT_URL))},function(a){a=document.getElementById("geStatus");null!=
 a&&(a.innerHTML="Error loading page. <a>Please try refreshing.</a>",a.getElementsByTagName("a")[0].onclick=function(){mxLanguage="en";b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))})})}function d(){mxResources.loadDefaultBundle=!1;b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}window.onerror=function(a,b,c,d,e){EditorUi.logError(a,b,c,d,e)};if("1"==urlParams.embed||
-"1"==urlParams.lightbox){var g=document.getElementById("geInfo");null!=g&&g.parentNode.removeChild(g)}if(null!=window.mxscript){if("1"==urlParams.offline||"1"==urlParams.appcache)mxscript("js/shapes.min.js"),mxscript("js/stencils.min.js"),mxscript("js/extensions.min.js"),g=document.createElement("iframe"),g.setAttribute("width","0"),g.setAttribute("height","0"),g.setAttribute("src","offline.html"),document.body.appendChild(g);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||
-mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){var g=null!=mxSettings.settings?mxSettings.getPlugins():null,e={},k=urlParams.p;App.initPluginCallback();if(null!=k)for(var m=k.split(";"),k=0;k<m.length;k++){var n=App.pluginRegistry[m[k]];null!=n&&null==e[n]?(e[n]=!0,"undefined"===typeof window.drawDevUrl?mxscript(n):mxscript(drawDevUrl+n)):null!=window.console&&console.log("Unknown plugin:",m[k])}else"0"==urlParams.chrome||EditorUi.isElectronApp||mxscript(App.FOOTER_PLUGIN_URL,
-null,null,null,mxClient.IS_SVG);if(null!=g&&0<g.length&&"0"!=urlParams.plugins){for(var m=window.location.protocol+"//"+window.location.host,q=!0,k=0;k<g.length&&q;k++)"/"!=g[k].charAt(0)&&g[k].substring(0,m.length)!=m&&(q=!1);if(q||mxUtils.confirm(mxResources.replacePlaceholders("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",[g.join("\n")]).replace(/\\n/g,
-"\n")))for(k=0;k<g.length;k++)try{null==e[g[k]]&&(e[n]=!0,mxscript(g[k]))}catch(p){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&&
-Editor.initMath();if("1"==urlParams.configure){var f=window.opener||window.parent,l=function(a){if(a.source==f)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",l),Editor.configure(b.config,!0),mxSettings.load(),d())}catch(u){null!=window.console&&console.log("Error in configuration: "+u)}};mxEvent.addListener(window,"message",l);f.postMessage(JSON.stringify({event:"load"}),"*")}else d()};mxUtils.extend(App,EditorUi);
+"1"==urlParams.lightbox){var g=document.getElementById("geInfo");null!=g&&g.parentNode.removeChild(g)}null!=document.referrer&&"aws3"==urlParams.libs&&"https://aws.amazon.com/architecture/icons/"==document.referrer.substring(0,42)&&(urlParams.libs="aws4");if(null!=window.mxscript){if("1"==urlParams.offline||"1"==urlParams.appcache)mxscript("js/shapes.min.js"),mxscript("js/stencils.min.js"),mxscript("js/extensions.min.js"),g=document.createElement("iframe"),g.setAttribute("width","0"),g.setAttribute("height",
+"0"),g.setAttribute("src","offline.html"),document.body.appendChild(g);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){var g=null!=mxSettings.settings?mxSettings.getPlugins():null,e={},k=urlParams.p;App.initPluginCallback();if(null!=k)for(var m=k.split(";"),k=0;k<m.length;k++){var n=App.pluginRegistry[m[k]];null!=n&&null==e[n]?(e[n]=!0,"undefined"===typeof window.drawDevUrl?mxscript(n):mxscript(drawDevUrl+
+n)):null!=window.console&&console.log("Unknown plugin:",m[k])}else"0"==urlParams.chrome||EditorUi.isElectronApp||mxscript(App.FOOTER_PLUGIN_URL,null,null,null,mxClient.IS_SVG);if(null!=g&&0<g.length&&"0"!=urlParams.plugins){for(var m=window.location.protocol+"//"+window.location.host,q=!0,k=0;k<g.length&&q;k++)"/"!=g[k].charAt(0)&&g[k].substring(0,m.length)!=m&&(q=!1);if(q||mxUtils.confirm(mxResources.replacePlaceholders("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",
+[g.join("\n")]).replace(/\\n/g,"\n")))for(k=0;k<g.length;k++)try{null==e[g[k]]&&(e[n]=!0,mxscript(g[k]))}catch(p){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=
+null)}"0"!=urlParams.math&&Editor.initMath();if("1"==urlParams.configure){var f=window.opener||window.parent,l=function(a){if(a.source==f)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",l),Editor.configure(b.config,!0),mxSettings.load(),d())}catch(u){null!=window.console&&console.log("Error in configuration: "+u)}};mxEvent.addListener(window,"message",l);f.postMessage(JSON.stringify({event:"load"}),"*")}else d()};mxUtils.extend(App,EditorUi);
 App.prototype.defaultUserPicture="https://lh3.googleusercontent.com/-HIzvXUy6QUY/AAAAAAAAAAI/AAAAAAAAAAA/giuR7PQyjEk/photo.jpg?sz=30";App.prototype.shareImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowOTgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMjU2NzdEMTcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMjU2NzdEMDcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNjgwMTE3NDA3MjA2ODExODcxRkM4MUY1OTFDMjQ5OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrM/fs0AAADgSURBVHjaYmDAA/7//88MwgzkAKDGFiD+BsQ/QWxSNaf9RwN37twpI8WAS+gGfP78+RpQSoRYA36iG/D379+vQClNdLVMOMz4gi7w79+/n0CKg1gD9qELvH379hzIHGK9oA508ieY8//8+fO5rq4uFCilRKwL1JmYmNhhHEZGRiZ+fn6Q2meEbDYG4u3/cYCfP38uA7kOm0ZOIJ7zn0jw48ePPiDFhmzArv8kgi9fvuwB+w5qwH9ykjswbFSZyM4sEMDPBDTlL5BxkFSd7969OwZ2BZKYGhDzkmjOJ4AAAwBhpRqGnEFb8QAAAABJRU5ErkJggg==";
 App.prototype.chevronUpImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDg2NEE3NUY1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDg2NEE3NjA1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ODY0QTc1RDUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0ODY0QTc1RTUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg+qUokAAAAMUExURQAAANnZ2b+/v////5bgre4AAAAEdFJOU////wBAKqn0AAAAL0lEQVR42mJgRgMMRAswMKAKMDDARBjg8lARBoR6KImkH0wTbygT6YaS4DmAAAMAYPkClOEDDD0AAAAASUVORK5CYII=":
 IMAGE_PATH+"/chevron-up.png";
@@ -8677,7 +8686,7 @@ mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),b,d):g==
 function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!0,e,d):g==App.MODE_TRELLO?null!=this.trello&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.trello.insertFile(c,d?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,e):g==App.MODE_BROWSER&&(b=mxUtils.bind(this,function(){localStorage.setItem(c,a)}),null==localStorage.getItem(c)?
 b():this.confirm(mxResources.get("replaceIt",[c]),b))};
 App.prototype.descriptorChanged=function(){var a=this.getCurrentFile();if(null!=a){if(null!=this.fname){this.fnameWrapper.style.display="block";this.fname.innerHTML="";var c=null!=a.getTitle()?a.getTitle():this.defaultFilename;mxUtils.write(this.fname,c);this.fname.setAttribute("title",c+" - "+mxResources.get("rename"))}var c=this.editor.graph,b=a.isEditable()&&!a.invalidChecksum;c.isEnabled()&&!b&&c.reset();c.setEnabled(b);null==urlParams.rev&&(this.updateDocumentTitle(),a=a.getHash(),0<a.length?
-window.location.hash=a:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.format.refresh()};
+window.location.hash=a:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.editor.graph.isSelectionEmpty()&&this.format.refresh()};
 App.prototype.showAuthDialog=function(a,c,b,d){var g=this.spinner.pause();this.showDialog((new AuthDialog(this,a,c,mxUtils.bind(this,function(a){try{null!=b&&b(a,mxUtils.bind(this,function(){this.hideDialog();g()}))}catch(k){this.editor.setStatus(mxUtils.htmlEntities(k.message))}}))).container,300,c?180:140,!0,!0,mxUtils.bind(this,function(a){null!=d&&d();a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))};
 App.prototype.convertFile=function(a,c,b,d,g,e){var k=c;/\.svg$/i.test(k)||(k=k.substring(0,c.lastIndexOf("."))+d);var m=!1;null!=this.gitHub&&a.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(m=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var n=new XMLHttpRequest;n.open("GET",a,!0);m||(n.responseType="blob");n.onload=mxUtils.bind(this,function(){var a=null;m?(a=JSON.parse(n.responseText),a=this.base64ToBlob(a.content,
 "application/octet-stream")):a=new Blob([n.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){g(new LocalFile(this,a,k,!0))}),e,c)});n.send()}else{var q=mxUtils.bind(this,function(b){try{/\.png$/i.test(c)?(temp=this.extractGraphModelFromPng(b),null!=temp?g(new LocalFile(this,temp,k,!0)):g(new LocalFile(this,b,c,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,a)?this.parseFile(new Blob([b],{type:"application/octet-stream"}),
@@ -8963,15 +8972,16 @@ e([d("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.tra
 640<=b?d("",c.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",c,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="):
 null,640<=b?d("",f.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="):
 null],60)}c=k.menus.get("language");null!=c&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=b?(null==M&&(f=p.addMenu("",c.funct),f.setAttribute("title",mxResources.get("language")),f.className="geToolbarButton",f.style.backgroundImage="url("+Editor.globeImage+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.position="absolute",f.style.height="24px",f.style.width="24px",f.style.zIndex="1",f.style.top="11px",f.style.right=
-"8px",f.style.cursor="pointer",l.appendChild(f),M=f),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=M&&(M.parentNode.removeChild(M),M=null))}u.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);urlParams.clibs&&c(this);var k=this,m=k.editor.graph;
-k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var n=null,p=new Menubar(k,l);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position="relative";k.statusContainer.style.maxWidth="";k.statusContainer.style.marginTop=
-"7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var q=k.descriptorChanged;k.descriptorChanged=function(){q.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);l.setAttribute("title",
-a.getTitle()+(null!=b?" ("+b+")":""))}else l.removeAttribute("title")};k.setStatusText(k.editor.getStatus());l.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";l.appendChild(k.buttonContainer);k.menubarContainer=k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";
-var g=k.diagramContainer.parentNode,t=document.createElement("div");t.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var J=k.menus.get("viewZoom");if(null!=J){this.tabContainer.style.right="70px";var A=p.addMenu("100%",J.funct);A.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");A.style.whiteSpace="nowrap";A.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";A.style.backgroundPosition="right 6px center";
-A.style.backgroundRepeat="no-repeat";A.style.backgroundColor="#ffffff";A.style.paddingRight="10px";A.style.display="block";A.style.position="absolute";A.style.textDecoration="none";A.style.textDecoration="none";A.style.right="0px";A.style.bottom="0px";A.style.overflow="hidden";A.style.visibility="hidden";A.style.textAlign="center";A.style.color="#000";A.style.fontSize="12px";A.style.color="#707070";A.style.width="59px";A.style.borderTop="1px solid lightgray";A.style.borderLeft="1px solid lightgray";
-A.style.height=parseInt(k.tabContainer.style.height)-1+"px";A.style.lineHeight=parseInt(k.tabContainer.style.height)+1+"px";t.appendChild(A);J=mxUtils.bind(this,function(){A.innerHTML=Math.round(100*k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,J);k.editor.addListener("resetGraphView",J);k.editor.addListener("pageSelected",J);var K=k.setGraphEnabled;k.setGraphEnabled=function(){K.apply(this,arguments);null!=this.tabContainer&&(A.style.visibility=this.tabContainer.style.visibility,
-this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}t.appendChild(k.tabContainer);t.appendChild(l);t.appendChild(k.diagramContainer);g.appendChild(t);k.updateTabContainer();var M=null;f();mxEvent.addListener(window,"resize",function(){f();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();
-null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,e,k){var d=c.y,g=c.x,q=!1,f=!1;if(null!=this.states&&null!=b&&null!=c){var l=this,p=new mxCellState,t=this.graph.getView().scale,u=Math.max(2,this.getGuideTolerance()/2);p.x=b.x+g;p.y=b.y+d;p.width=b.width;p.height=b.height;for(var x=[],z=[],v=0;v<this.states.length;v++){var y=this.states[v];y instanceof mxCellState&&(k||!this.graph.isCellSelected(y.cell))&&((p.x>=y.x&&p.x<=y.x+y.width||y.x>=p.x&&y.x<=p.x+p.width)&&(p.y>
+"8px",f.style.cursor="pointer",l.appendChild(f),M=f),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=M&&(M.parentNode.removeChild(M),M=null))}u.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);null==urlParams.clibs&&null==urlParams.libs||
+c(this);var k=this,m=k.editor.graph;k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var n=null,p=new Menubar(k,l);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position="relative";k.statusContainer.style.maxWidth=
+"";k.statusContainer.style.marginTop="7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var q=k.descriptorChanged;k.descriptorChanged=function(){q.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");
+b=mxResources.get(b);l.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else l.removeAttribute("title")};k.setStatusText(k.editor.getStatus());l.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";l.appendChild(k.buttonContainer);k.menubarContainer=k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText=
+"position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var g=k.diagramContainer.parentNode,t=document.createElement("div");t.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var J=k.menus.get("viewZoom");if(null!=J){this.tabContainer.style.right="70px";var A=p.addMenu("100%",
+J.funct);A.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");A.style.whiteSpace="nowrap";A.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";A.style.backgroundPosition="right 6px center";A.style.backgroundRepeat="no-repeat";A.style.backgroundColor="#ffffff";A.style.paddingRight="10px";A.style.display="block";A.style.position="absolute";A.style.textDecoration="none";A.style.textDecoration="none";A.style.right="0px";A.style.bottom="0px";A.style.overflow="hidden";A.style.visibility=
+"hidden";A.style.textAlign="center";A.style.color="#000";A.style.fontSize="12px";A.style.color="#707070";A.style.width="59px";A.style.borderTop="1px solid lightgray";A.style.borderLeft="1px solid lightgray";A.style.height=parseInt(k.tabContainer.style.height)-1+"px";A.style.lineHeight=parseInt(k.tabContainer.style.height)+1+"px";t.appendChild(A);J=mxUtils.bind(this,function(){A.innerHTML=Math.round(100*k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,J);k.editor.addListener("resetGraphView",
+J);k.editor.addListener("pageSelected",J);var K=k.setGraphEnabled;k.setGraphEnabled=function(){K.apply(this,arguments);null!=this.tabContainer&&(A.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}t.appendChild(k.tabContainer);t.appendChild(l);t.appendChild(k.diagramContainer);g.appendChild(t);k.updateTabContainer();var M=null;f();mxEvent.addListener(window,"resize",function(){f();null!=k.sidebarWindow&&
+k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,e,k){var d=c.y,g=c.x,q=!1,f=!1;if(null!=this.states&&null!=b&&null!=c){var l=this,p=new mxCellState,t=this.graph.getView().scale,u=Math.max(2,this.getGuideTolerance()/2);p.x=b.x+g;p.y=b.y+d;p.width=b.width;p.height=b.height;for(var x=[],z=[],v=0;v<this.states.length;v++){var y=this.states[v];y instanceof mxCellState&&(k||!this.graph.isCellSelected(y.cell))&&((p.x>=y.x&&p.x<=y.x+y.width||y.x>=p.x&&y.x<=p.x+p.width)&&(p.y>
 y.y+y.height+4||p.y+p.height+4<y.y)?x.push(y):(p.y>=y.y&&p.y<=y.y+y.height||y.y>=p.y&&y.y<=p.y+p.height)&&(p.x>y.x+y.width+4||p.x+p.width+4<y.x)&&z.push(y))}var B=0,H=0,F=y=0,D=0,E=0,I=0,C=0,G=5*t;if(1<x.length){x.push(p);x.sort(function(a,b){return a.y-b.y});var J=!1,v=p==x[0],t=p==x[x.length-1];if(!v&&!t)for(v=1;v<x.length-1;v++)if(p==x[v]){t=x[v-1];v=x[v+1];y=H=F=(v.y-t.y-t.height-p.height)/2;break}for(v=0;v<x.length-1;v++){var t=x[v],A=x[v+1],K=p==t||p==A,A=A.y-t.y-t.height,J=J|p==t;if(0==H&&
 0==B)H=A,B=1;else if(Math.abs(H-A)<=(K||1==v&&J?u:0))B+=1;else if(1<B&&J){x=x.slice(0,v+1);break}else if(3<=x.length-v&&!J)B=0,y=H=0!=F?F:0,x.splice(0,0==v?1:v),v=-1;else break;0!=y||K||(H=y=A)}3==x.length&&x[1]==p&&(y=0)}if(1<z.length){z.push(p);z.sort(function(a,b){return a.x-b.x});J=!1;v=p==z[0];t=p==z[z.length-1];if(!v&&!t)for(v=1;v<z.length-1;v++)if(p==z[v]){t=z[v-1];v=z[v+1];I=E=C=(v.x-t.x-t.width-p.width)/2;break}for(v=0;v<z.length-1;v++){t=z[v];A=z[v+1];K=p==t||p==A;A=A.x-t.x-t.width;J|=p==
 t;if(0==E&&0==D)E=A,D=1;else if(Math.abs(E-A)<=(K||1==v&&J?u:0))D+=1;else if(1<D&&J){z=z.slice(0,v+1);break}else if(3<=z.length-v&&!J)D=0,I=E=0!=C?C:0,z.splice(0,0==v?1:v),v=-1;else break;0!=I||K||(E=I=A)}3==z.length&&z[1]==p&&(I=0)}u=function(a,b,c,d){var e=[],f;d?(d=G,f=0):(d=0,f=G);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR,
diff --git a/src/main/webapp/js/atlas-viewer.min.js b/src/main/webapp/js/atlas-viewer.min.js
index 7d2187ba5311be73f1f60f36a0a7ed57386f566b..a5d03d174dc022c74c3ee98d4ad9b20fe2c075db 100644
--- a/src/main/webapp/js/atlas-viewer.min.js
+++ b/src/main/webapp/js/atlas-viewer.min.js
@@ -1981,6 +1981,8 @@ Editor.layersLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgC
 Editor.closeLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAUVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////8IN+deAAAAGnRSTlMAuvAIg/dDM/QlOeuFhj0S5s4vKgzjxJRQNiLSey0AAADNSURBVDjLfZLbEoMgDEQjRRRs1XqX///QNmOHJSnjPkHOGR7IEmeoGtJZstnwjqbRfIsmgEdtPCqe9Ynz7ZSc07rE2QiSc+qv8TvjRXA2PDUm3dpe82iJhOEUfxJJo3aCv+jKmRmH4lcCjCjeh9GWOdL/GZZkXH3PYYDrHBnfc4D/RVZf5sjoC1was+Y6HQxwaUxFvq/a0Pv343VCTxfBSRiB+ab3M3eiQZXmMNBJ3Y8pGRZtYQ7DgHMXJEdPLTaN/qBjzJOBc3nmNcbsA16bMR0oLqf+AAAAAElFTkSuQmCC";
 Editor.editLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA+hzi3nRQWyXzkm0h2j3u54gzEgSXjlYoTBgJxL2loGpAOS3Jt7Wxm35Ga7gRAAAA6UlEQVQ4y63Q2XaCMBSF4Q0JBasoQ5DJqbXjfv8HbCK2BZNwo/8FXHx7rcMC7lQu0iX8qU/qtvAWCpoqH8dYzS0SwaV5eK/UAf8X9pd2CWKzuF5Jrftp1owXwnIGLUaL3PYndOHf4kNNXWrXK/m7CHunk7K8LE6YtBpcknwG9GKxnroY+ylBXcx4xKyx/u/EuXi509cP9V7OO1oyHnzrdFTcqLG/4ibBA5pIMr/4xvKzuQDkVy9wW8SgBFD6HDvuzMvrZcC9QlkfMzI7w64m+b4PqBMNHB05lH21PVxJo2/fBXxV4hB38PcD+5AkI4FuETsAAAAASUVORK5CYII=";
 Editor.previousLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFZJREFUOMvdkskRgDAMA4lDwg2B7b9XOlge/KKvdsa25KFb5XlRvxXC/DNBEv8IFNjBgGdDgXtFgTyhwDXiQAUHCvwa4Uv6mR6UR+1led2mVonvl+tML45qCQNQLIx7AAAAAElFTkSuQmCC";Editor.nextLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg==";
+Editor.refreshLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAErnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarVdrlispCP7PKmYJouJjOT7PuTuY5c+HZZJKOkmn+055UioiIB9ghca/fyb9g8dyDOQlppBDMHh89tkWDJI5nqNn49d7PXYvYX5Hp+uCBcmhd8c0jM1fQJfbhug3vd7TKbYtJ21Be+Ei0Klm1bb50hbk7EHnPae89xV/Os7+zWbXstRj6XHuI5zRBfKcJTscO4N3Ui0OFrjsitOxvsUqhTG2Li7KC9/RdfjgvOvowXembLq7dwWZsBnCg482neW575aHzhbxTfPdQsgmmvNz9t3sac5xnK74AE8F2oe6HGWNwAh3ere2BbSIn2AcV8toCUdsQKwDzYrWiDNbeHuy586FJ4/VN24w0dthI3prm3WLlly02bYFitfG00bA08kl4NGAmgPZXm3hpTcvfY0TNHcGp2UIY+z40ugZ8TftKmhODV1mk66+gl1WYxpmKHL6BhcA4bl9Ksu/q9EpbswJWAcEZbk54YDF1ENEFb7Flls4O/CJ8WSO1ODYtwC4CLoFxiCiPZvATjiwidZGZvgxAZ8Cy63ztgIBFrGdaQIb5wLASVZ1Y0/kxWvFHmSUFgAhLiBJkiYQwPJeED/RJ8RQESeeRCRIlCRZSnDBBwkhxKA1qkQXfZQYYowp5liSSz5JCimmlHIq2WaHEiY55Eg55ZxLgdIC0QW7CzhKqba66qvUUGNNNdfSED7NN2mhxZZabqXb7jrSv4ceqaeeexk8EErDDxlhxJFGHmUi1qabfsoMM8408yxX1Daq96jxA3LvUeONmiLmF1+8oQZyjBcRrOVEFDMgZj0D8agIIKCtYmYSe28VOcXMZIukEAvUWBSczooYEPSDrUy+YndD7i1uJP5HuNlXyJFC938gRwrdRu4rbk9Q62XdKG4BpFmoPjVuorCBYaRiU9E76eN+1llySMahUBZbB82pgxvh6TwdhFiWpMXw2NOrhZf9rO0Qi4PWEeDRtUI/EPHa7t4C1eaKMs7aS2ldb2DEQ6kIC1z0DVeyxD6cTBNFL2hh/9ALkBDca+yrUrGf/6an1wwZVhjExuxr8MUMh2GoHQfSQ9KPHP2mfymI4VJ8HGm4rMEpiNTXZSZzcfpaopeBV8fiAcQqSV5EJmR1FVooLeaPY9vrroDtYw1OR3OXmHgdgcl85iO1p6ZcRi+f+/aLC2kdE9KSG2uAcjqfRJ32Dkcy9sXR6YEAFSGvwEFA66E/jUg6RV5GInA9mQBRqMYdieL2tCNhTjNJiEy9lj2O9nEmXDVhxppfvAzYM7qfvpmNHjleBH1VQyt5D14l/3pGS1Uz8qN0fyKS7qf2KELuAvwialVag+f16OjpgXACfg3f7b0pGxKpofK913aUye8spG/VHb55bxnEUur6h09C+TxrV3KOPbgs0Lv8PBWvxxukzAWSP8XRCdIhDhqs1Sv0fQnYKo5kXwv0ztyf9PSLUv+00tFH1nxgK/29LUdP20PXq8JoEd82XGZr//0nAIq/bPpxecDZaeA77bNvo+sVBTkOcvjGQT/7vHrd0129HqUcF9elfOOrJDaO/vvkpde5iu/FjH/P/wGZHRMfLTnvnwAAAAJiS0dEAP+Hj8y/AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wIFCRsCWfPx5wAAAnVJREFUSMfNlT1oU1EYht+TpLG2tqJVCqI2BXFQEcGiKGjRwUlKlVIFcalCHXTwb3FxEAedHDp1C0IFoTg4VQS1KlJLxani0oiKIk1r0/8kvedxyM1tbm6uVETwu9t33vc939/5rvSXZsIOrExEEUWErGyW6pULZBVfoz06rBZtUZ2sJvRRr/VSKeMUMfNabeapDZKnRA1dDLOI3yzjPGAfkcuSMLTxiP2ZYNjs4glLhNkMd1mP4SSTwD3rj98ajvGZ35vlOZf4CUCPNVKsSHdkjqpPDVp2/NAnpRVVoxJqcKtl1KpDigRy/ya2M+bds8QgnWwijsFQTTMXGMWWRdNTkgJx+r2DDNepyfkucMRGesuq4xNoI+e6p+kkGKIwnCYbIkCcAdfpcCOE3s5kaArsJOM631MXpA+J4wG6KxCRpqSDqi8oqdfOBAVapA6tC7hnpWIbR3RbkrSgh9EK8x4Vd5RSlc+5qPvDeNNv3S8V8mSGPETxczSk/8NMoUll+UnYfLQiwcNCPlIoIkZXdL5svqcj3XoXpC9JHbolI2nKdOhLQSrGcKDHDl0V71/FKxcxxoaiM8ZIgJ6stG7mRDt5F5PEhAlYktQH6RmRYNTFZDmyHFa5QIrNQXpOJHjhYR5TFS5gGeQA0YWS0hHnBB88RJq9UwoXAJijnzPsZisJWujmmffcIctFSrehJ2D57ts6llnGSbPgk85xE//UuAIOSZro86pc2TJcJTB0UQZwCpWnmnOkAtuv2Nw3tFZYNzmxjVPFvlvRyDXeMl0i45DmKWepza/s35hXrEbN2qEmrZWjCaU0qq8m98cvLScrp7B4/p39Au+cBBvd+o3cAAAAAElFTkSuQmCC";
+Editor.backLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADxnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjatVZbkuQoDPznFHsEJCEexwEDEXuDOf4mmHq7e6vcPUWUhWUhJZmAbdqff7v5Bz+2wsZpiD55b/FzySXO6ES7/3ZL1s3r/PF6hPsHv7k+YLgEVvZb31Z8hl9vA4Jb/vLoN2FbeeJKtB5cEsqoPKqtuLgSCe9+WvcmrXHZ3U1n/bvf09JK/nzvAsioaidH3ITE4hpHFQECSZJl9MdVeXgIfZ5+lXTMnbl2n8i79p64s3n55ZEKY/0K8E8cLT/pMXeToXtEdKv88KDma4lX7nqNvbd9dtl5MOXNmtRlKrOHwAIqZQ7zaAF/RT/MltAiprhBsQo1C9pmKBGD7U6OKmXq1KbdaANEx40DLPPGMn1RAifepihuNOocIEM1EqHHBtUEbr5ioVk3zXobRVSuhEgmJCOMeGnmyHmmXRP1vu1LLV65Ai4eaxowhnLjiigIQn1xqpPf2czdurF3wgoU1ElzxASzLXuKonRbWzJ1FsSpdcbuW4NCXQlAEWorwGBFO7KeRMmTDcyBCDxG6JOBnMVxgQKkypVMhzYiHuJEHrUxJtCMZeXdjaMFQqh4CZAGGwViOadYP8FFrKGsos6oqtegUZNmL9559d4HP86oHCS4oMGHEGJIIUeJLmr0McQYU8yJk+AI0+RTMCmmlHJG0YzUGaMzInIuXKS4osWXUGJJJW9YPpvbdPNb2OKWtly5SsX2r74GU2NNNTdqWErNNW2+hRZbarljrXXprmv3PfTYU89X1Zaqj6rRk3Lfq0ZLtaGYm3HhphrcIVxS0DhOdGgGxdgRFA9DASxoHprZSM7xUG5oZhNjUyhDNdIhTqWhGBR0jVg7XbW7KfetbkbdR7rxV8qZId1vKGeGdEu5V90OVKt5vlFkCjR24eDUSsfBhoAWM8c83kmnrXl0lNaxsx+jejyR6KwtzbwiGLa08d75wdTeR/AMwJxFcBLRkQjDpuLmFlbC99H4nsDlh/arRKH26orT8d0ynDfLii8heRlmfgnQJREAgIOv0G327URnkUwG8BIZXyNPFJD2PfCVnW+t+XQA7ODhpbw5V//Vmp/g2FXYhTKTkh/jsfuCfA9PcTgz49wuDTtE89wr+8bhaKyM/bo/RZi/PvnQms8HytrA88ToBef0uDNPMQtdn5P4pIg5M40jdOYe3jG697gz59G8JDomb8WMN+89vAJ4dJTN/Aqcg0QD3hfg1mLcz+6F8TbW8C+RZP5H27fR/TWOPkZ34erbqeFrKJn/AEE/tAwjCLp7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAuJAAALiQE3ycutAAAAB3RJTUUH4wIFCR4CJIQFogAAAWRJREFUWMPFlztLA0EURjdqJNk0gTQhkEdjYWdhIyI2YusPsbOztbFKI4ggaSxSa6FdQIgQtFKwCwhxEQI2isEHWeYeC2fxkkYLvfvBsM0w5yyX/YYNgn8IsAGMgFZgHWANeOcrH9bwFeCV72xawpcm4NuW8AXgWcGblvA5YKjgB5bwOhApeMsSXgUGCt52zmVM4CJSBvoKfioiWas3LwI3Cn4O5K3gIdBT8AsgtIR3FfwSKFjNPAd0FPwWKFnBZ4ATBb8DKpafW1PB74Ga9QUz8vAIaPz1+VO/2DP2z6xf5vf7jhpBBNRNBZxzGaCtJAZA1VRCRGaBMyXRF5Gy9SjyvnaTXANFa4nQ12+SnlkVK4kCcKUkumlIlHwdJ+mISM5aouJrOcmxiExbS9R8PSc5iuPYvKgawIOSOEyjLeeBRyWxn4bEIvCiJHbTkFie+DvaSkNiFXjzAuMgjQDrwBOw99PeT/vzU1TSg3fFAAAAAElFTkSuQmCC";
 Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.popupsAllowed=!0;mxUtils.extend(Editor,mxEventSource);Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0;
 Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))};
 Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a};
@@ -2000,11 +2002,11 @@ Editor.prototype.setFilename=function(a){this.filename=a};
 Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,e){b.undoableEditHappened(e.getProperty("edit"))};var e=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,e);a.getView().addListener(mxEvent.UNDO,e);e=function(b,e){var c=a.getSelectionCellsForChanges(e.getProperty("edit").changes);a.getModel();for(var k=[],r=0;r<c.length;r++)null!=a.view.getState(c[r])&&k.push(c[r]);a.setSelectionCells(k)};
 b.addListener(mxEvent.UNDO,e);b.addListener(mxEvent.REDO,e);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,e,c,k,m,q,r,v,z){var d=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(d=80);e+=d;c+=d;var f=e,l=c,n=mxUtils.getDocumentSize(),g=n.height,p=Math.max(1,Math.round((n.width-e-64)/2)),B=Math.max(1,Math.round((g-c-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");e=null!=document.body?Math.min(e,document.body.scrollWidth-64):e;c=Math.min(c,g-64);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=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));n=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=n.x+"px";this.bg.style.top=n.y+"px";p+=n.x;B+=n.y;k&&document.body.appendChild(this.bg);var x=a.createDiv(v?"geTransDialog":"geDialog");k=this.getPosition(p,B,e,c);p=k.x;B=k.y;x.style.width=
-e+"px";x.style.height=c+"px";x.style.left=p+"px";x.style.top=B+"px";x.style.zIndex=this.zIndex;x.appendChild(b);document.body.appendChild(x);!r&&b.clientHeight>x.clientHeight-64&&(b.style.overflowY="auto");m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=B+14+"px",m.style.left=p+e+38-d+"px",m.style.zIndex=this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
-document.body.appendChild(m),this.dialogImg=m,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(d){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=z){var n=z();null!=n&&(f=e=n.w,l=c=n.h)}n=mxUtils.getDocumentSize();g=n.height;this.bg.style.height=g+"px";p=Math.max(1,Math.round((n.width-e-64)/2));B=Math.max(1,Math.round((g-c-a.footerHeight)/3));e=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;c=Math.min(l,g-64);n=this.getPosition(p,
-B,e,c);p=n.x;B=n.y;x.style.left=p+"px";x.style.top=B+"px";x.style.width=e+"px";x.style.height=c+"px";!r&&b.clientHeight>x.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=B+14+"px",this.dialogImg.style.left=p+e+38-d+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=x;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
+function Dialog(a,b,e,c,k,m,q,r,v,z){var d=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(d=80);e+=d;c+=d;var f=e,l=c,p=mxUtils.getDocumentSize(),g=p.height,n=Math.max(1,Math.round((p.width-e-64)/2)),A=Math.max(1,Math.round((g-c-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");e=null!=document.body?Math.min(e,document.body.scrollWidth-64):e;c=Math.min(c,g-64);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=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));p=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=p.x+"px";this.bg.style.top=p.y+"px";n+=p.x;A+=p.y;k&&document.body.appendChild(this.bg);var y=a.createDiv(v?"geTransDialog":"geDialog");k=this.getPosition(n,A,e,c);n=k.x;A=k.y;y.style.width=
+e+"px";y.style.height=c+"px";y.style.left=n+"px";y.style.top=A+"px";y.style.zIndex=this.zIndex;y.appendChild(b);document.body.appendChild(y);!r&&b.clientHeight>y.clientHeight-64&&(b.style.overflowY="auto");m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=A+14+"px",m.style.left=n+e+38-d+"px",m.style.zIndex=this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
+document.body.appendChild(m),this.dialogImg=m,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(d){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=z){var p=z();null!=p&&(f=e=p.w,l=c=p.h)}p=mxUtils.getDocumentSize();g=p.height;this.bg.style.height=g+"px";n=Math.max(1,Math.round((p.width-e-64)/2));A=Math.max(1,Math.round((g-c-a.footerHeight)/3));e=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;c=Math.min(l,g-64);p=this.getPosition(n,
+A,e,c);n=p.x;A=p.y;y.style.left=n+"px";y.style.top=A+"px";y.style.width=e+"px";y.style.height=c+"px";!r&&b.clientHeight>y.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=A+14+"px",this.dialogImg.style.left=n+e+38-d+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=y;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
 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+
@@ -2014,8 +2016,8 @@ Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoA
 Dialog.prototype.unlockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCN0QxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCN0UxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3QjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI3QzE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkKMpVwAAAAYUExURZmZmbKysr+/v6ysrOXl5czMzLGxsf///zHN5lwAAAAIdFJOU/////////8A3oO9WQAAADxJREFUeNpUzFESACAEBNBVsfe/cZJU+8Mzs8CIABCidtfGOndnYsT40HDSiCcbPdoJo10o9aI677cpwACRoAF3dFNlswAAAABJRU5ErkJggg==":IMAGE_PATH+
 "/unlocked.png";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 PrintDialog=function(a,b){this.create(a,b)};
-PrintDialog.prototype.create=function(a){function b(a){var b=r.checked||z.checked,c=parseInt(f.value)/100;isNaN(c)&&(c=1,f.value="100%");var c=.75*c,l=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,n=1/e.pageScale;if(b){var t=r.checked?1:parseInt(d.value);isNaN(t)||(n=mxUtils.getScaleForPageCount(t,e,l))}e.getGraphBounds();var y=t=0,l=mxRectangle.fromRectangle(l);l.width=Math.ceil(l.width*c);l.height=Math.ceil(l.height*c);n*=c;!b&&e.pageVisible?(c=e.getPageLayout(),t-=c.x*l.width,y-=c.y*l.height):
-b=!0;b=PrintDialog.createPrintPreview(e,n,l,0,t,y,b);b.open();a&&PrintDialog.printPreview(b)}var e=a.editor.graph,c,k,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var q=document.createElement("tbody");c=document.createElement("tr");var r=document.createElement("input");r.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(r);var v=document.createElement("span");mxUtils.write(v," "+mxResources.get("fitPage"));
+PrintDialog.prototype.create=function(a){function b(a){var b=r.checked||z.checked,c=parseInt(f.value)/100;isNaN(c)&&(c=1,f.value="100%");var c=.75*c,l=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,p=1/e.pageScale;if(b){var t=r.checked?1:parseInt(d.value);isNaN(t)||(p=mxUtils.getScaleForPageCount(t,e,l))}e.getGraphBounds();var x=t=0,l=mxRectangle.fromRectangle(l);l.width=Math.ceil(l.width*c);l.height=Math.ceil(l.height*c);p*=c;!b&&e.pageVisible?(c=e.getPageLayout(),t-=c.x*l.width,x-=c.y*l.height):
+b=!0;b=PrintDialog.createPrintPreview(e,p,l,0,t,x,b);b.open();a&&PrintDialog.printPreview(b)}var e=a.editor.graph,c,k,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var q=document.createElement("tbody");c=document.createElement("tr");var r=document.createElement("input");r.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(r);var v=document.createElement("span");mxUtils.write(v," "+mxResources.get("fitPage"));
 k.appendChild(v);mxEvent.addListener(v,"click",function(a){r.checked=!r.checked;z.checked=!r.checked;mxEvent.consume(a)});mxEvent.addListener(r,"change",function(){z.checked=!r.checked});c.appendChild(k);q.appendChild(c);c=c.cloneNode(!1);var z=document.createElement("input");z.setAttribute("type","checkbox");k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(z);v=document.createElement("span");mxUtils.write(v," "+mxResources.get("posterPrint")+":");k.appendChild(v);mxEvent.addListener(v,
 "click",function(a){z.checked=!z.checked;r.checked=!z.checked;mxEvent.consume(a)});c.appendChild(k);var d=document.createElement("input");d.setAttribute("value","1");d.setAttribute("type","number");d.setAttribute("min","1");d.setAttribute("size","4");d.setAttribute("disabled","disabled");d.style.width="50px";k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(d);mxUtils.write(k," "+mxResources.get("pages")+" (max)");c.appendChild(k);q.appendChild(c);mxEvent.addListener(z,"change",
 function(){z.checked?d.removeAttribute("disabled"):d.setAttribute("disabled","disabled");r.checked=!z.checked});c=c.cloneNode(!1);k=document.createElement("td");mxUtils.write(k,mxResources.get("pageScale")+":");c.appendChild(k);k=document.createElement("td");var f=document.createElement("input");f.setAttribute("value","100 %");f.setAttribute("size","5");f.style.width="50px";k.appendChild(f);c.appendChild(k);q.appendChild(c);c=document.createElement("tr");k=document.createElement("td");k.colSpan=2;
@@ -2023,21 +2025,21 @@ k.style.paddingTop="20px";k.setAttribute("align","right");v=mxUtils.button(mxRes
 k.appendChild(v);c.appendChild(k);q.appendChild(c);m.appendChild(q);this.container=m};PrintDialog.printPreview=function(a){if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}};
 PrintDialog.createPrintPreview=function(a,b,e,c,k,m,q){b=new mxPrintPreview(a,b,e,c,k,m);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=q;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var r=b.writeHead;b.writeHead=function(a){r.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln("  body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b};
 PrintDialog.previewEnabled=!0;
-var PageSetupDialog=function(a){function b(){null==d||d==mxConstants.NONE?(z.style.backgroundColor="",z.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(z.style.backgroundColor=d,z.style.backgroundImage="")}function e(){null==n?(l.removeAttribute("title"),l.style.fontSize="",l.innerHTML=mxResources.get("change")+"..."):(l.setAttribute("title",n.src),l.style.fontSize="11px",l.innerHTML=n.src.substring(0,42)+"...")}var c=a.editor.graph,k,m,q=document.createElement("table");q.style.width=
+var PageSetupDialog=function(a){function b(){null==d||d==mxConstants.NONE?(z.style.backgroundColor="",z.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(z.style.backgroundColor=d,z.style.backgroundImage="")}function e(){null==p?(l.removeAttribute("title"),l.style.fontSize="",l.innerHTML=mxResources.get("change")+"..."):(l.setAttribute("title",p.src),l.style.fontSize="11px",l.innerHTML=p.src.substring(0,42)+"...")}var c=a.editor.graph,k,m,q=document.createElement("table");q.style.width=
 "100%";q.style.height="100%";var r=document.createElement("tbody");k=document.createElement("tr");m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("paperSize")+":");k.appendChild(m);m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";var v=PageSetupDialog.addPageFormatPanel(m,"pagesetupdialog",c.pageFormat);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");
 mxUtils.write(m,mxResources.get("background")+":");k.appendChild(m);m=document.createElement("td");m.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var z=document.createElement("button");z.style.width="18px";z.style.height="18px";z.style.marginRight="20px";z.style.backgroundPosition="center center";z.style.backgroundRepeat="no-repeat";var d=c.background;b();mxEvent.addListener(z,"click",function(f){a.pickColor(d||"none",function(a){d=a;b()});mxEvent.consume(f)});
 m.appendChild(z);mxUtils.write(m,mxResources.get("gridSize")+":");var f=document.createElement("input");f.setAttribute("type","number");f.setAttribute("min","0");f.style.width="40px";f.style.marginLeft="6px";f.value=c.getGridSize();m.appendChild(f);mxEvent.addListener(f,"change",function(){var a=parseInt(f.value);f.value=Math.max(1,isNaN(a)?c.getGridSize():a)});k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");mxUtils.write(m,mxResources.get("image")+
-":");k.appendChild(m);m=document.createElement("td");var l=document.createElement("a");l.style.textDecoration="underline";l.style.cursor="pointer";l.style.color="#a0a0a0";var n=c.backgroundImage;mxEvent.addListener(l,"click",function(d){a.showBackgroundImageDialog(function(a){n=a;e()});mxEvent.consume(d)});e();m.appendChild(l);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var g=
-mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&m.appendChild(g);var p=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c.gridSize!==f.value&&c.setGridSize(parseInt(f.value));var b=new ChangePageSetup(a,d,n,v.get());b.ignoreColor=c.background==d;b.ignoreImage=(null!=c.backgroundImage?c.backgroundImage.src:null)===(null!=n?n.src:null);c.pageFormat.width==b.previousFormat.width&&c.pageFormat.height==b.previousFormat.height&&
-b.ignoreColor&&b.ignoreImage||c.model.execute(b)});p.className="geBtn gePrimaryBtn";m.appendChild(p);a.editor.cancelFirst||m.appendChild(g);k.appendChild(m);r.appendChild(k);q.appendChild(r);this.container=q};
+":");k.appendChild(m);m=document.createElement("td");var l=document.createElement("a");l.style.textDecoration="underline";l.style.cursor="pointer";l.style.color="#a0a0a0";var p=c.backgroundImage;mxEvent.addListener(l,"click",function(d){a.showBackgroundImageDialog(function(a){p=a;e()});mxEvent.consume(d)});e();m.appendChild(l);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var g=
+mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&m.appendChild(g);var n=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c.gridSize!==f.value&&c.setGridSize(parseInt(f.value));var b=new ChangePageSetup(a,d,p,v.get());b.ignoreColor=c.background==d;b.ignoreImage=(null!=c.backgroundImage?c.backgroundImage.src:null)===(null!=p?p.src:null);c.pageFormat.width==b.previousFormat.width&&c.pageFormat.height==b.previousFormat.height&&
+b.ignoreColor&&b.ignoreImage||c.model.execute(b)});n.className="geBtn gePrimaryBtn";m.appendChild(n);a.editor.cancelFirst||m.appendChild(g);k.appendChild(m);r.appendChild(k);q.appendChild(r);this.container=q};
 PageSetupDialog.addPageFormatPanel=function(a,b,e,c){function k(a,b,c){if(c||f!=document.activeElement&&l!=document.activeElement){a=!1;for(b=0;b<g.length;b++)c=g[b],t?"custom"==c.key&&(r.value=c.key,t=!1):null!=c.format&&("a4"==c.key?826==e.width?(e=mxRectangle.fromRectangle(e),e.width=827):826==e.height&&(e=mxRectangle.fromRectangle(e),e.height=827):"a5"==c.key&&(584==e.width?(e=mxRectangle.fromRectangle(e),e.width=583):584==e.height&&(e=mxRectangle.fromRectangle(e),e.height=583)),e.width==c.format.width&&
 e.height==c.format.height?(r.value=c.key,m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0,q.removeAttribute("checked"),q.defaultChecked=!1,q.checked=!1,a=!0):e.width==c.format.height&&e.height==c.format.width&&(r.value=c.key,m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1,q.setAttribute("checked","checked"),q.defaultChecked=!0,a=q.checked=!0));a?(v.style.display="",d.style.display="none"):(f.value=e.width/100,l.value=e.height/100,m.setAttribute("checked","checked"),
 r.value="custom",v.style.display="none",d.style.display="")}}b="format-"+b;var m=document.createElement("input");m.setAttribute("name",b);m.setAttribute("type","radio");m.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",b);q.setAttribute("type","radio");q.setAttribute("value","landscape");var r=document.createElement("select");r.style.marginBottom="8px";r.style.width="202px";var v=document.createElement("div");v.style.marginLeft="4px";v.style.width="210px";
 v.style.height="24px";m.style.marginRight="6px";v.appendChild(m);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));v.appendChild(b);q.style.marginLeft="10px";q.style.marginRight="6px";v.appendChild(q);var z=document.createElement("span");z.style.width="100px";mxUtils.write(z,mxResources.get("landscape"));v.appendChild(z);var d=document.createElement("div");d.style.marginLeft="4px";d.style.width="210px";d.style.height="24px";var f=document.createElement("input");
-f.setAttribute("size","7");f.style.textAlign="right";d.appendChild(f);mxUtils.write(d," in x ");var l=document.createElement("input");l.setAttribute("size","7");l.style.textAlign="right";d.appendChild(l);mxUtils.write(d," in");v.style.display="none";d.style.display="none";for(var n={},g=PageSetupDialog.getFormats(),p=0;p<g.length;p++){var B=g[p];n[B.key]=B;var x=document.createElement("option");x.setAttribute("value",B.key);mxUtils.write(x,B.title);r.appendChild(x)}var t=!1;k();a.appendChild(r);mxUtils.br(a);
-a.appendChild(v);a.appendChild(d);var y=e,u=function(a,b){var g=n[r.value];null!=g.format?(f.value=g.format.width/100,l.value=g.format.height/100,d.style.display="none",v.style.display=""):(v.style.display="none",d.style.display="");g=parseFloat(f.value);if(isNaN(g)||0>=g)f.value=e.width/100;g=parseFloat(l.value);if(isNaN(g)||0>=g)l.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(f.value)),Math.floor(100*parseFloat(l.value)));"custom"!=r.value&&q.checked&&(g=new mxRectangle(0,0,
-g.height,g.width));b&&t||g.width==y.width&&g.height==y.height||(y=g,null!=c&&c(y))};mxEvent.addListener(b,"click",function(a){m.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(z,"click",function(a){q.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(f,"blur",u);mxEvent.addListener(f,"click",u);mxEvent.addListener(l,"blur",u);mxEvent.addListener(l,"click",u);mxEvent.addListener(q,"change",u);mxEvent.addListener(m,"change",u);mxEvent.addListener(r,"change",function(a){t="custom"==r.value;
-u(a,!0)});u();return{set:function(a){e=a;k(null,null,!0)},get:function(){return y},widthInput:f,heightInput:l}};
+f.setAttribute("size","7");f.style.textAlign="right";d.appendChild(f);mxUtils.write(d," in x ");var l=document.createElement("input");l.setAttribute("size","7");l.style.textAlign="right";d.appendChild(l);mxUtils.write(d," in");v.style.display="none";d.style.display="none";for(var p={},g=PageSetupDialog.getFormats(),n=0;n<g.length;n++){var A=g[n];p[A.key]=A;var y=document.createElement("option");y.setAttribute("value",A.key);mxUtils.write(y,A.title);r.appendChild(y)}var t=!1;k();a.appendChild(r);mxUtils.br(a);
+a.appendChild(v);a.appendChild(d);var x=e,u=function(a,b){var g=p[r.value];null!=g.format?(f.value=g.format.width/100,l.value=g.format.height/100,d.style.display="none",v.style.display=""):(v.style.display="none",d.style.display="");g=parseFloat(f.value);if(isNaN(g)||0>=g)f.value=e.width/100;g=parseFloat(l.value);if(isNaN(g)||0>=g)l.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(f.value)),Math.floor(100*parseFloat(l.value)));"custom"!=r.value&&q.checked&&(g=new mxRectangle(0,0,
+g.height,g.width));b&&t||g.width==x.width&&g.height==x.height||(x=g,null!=c&&c(x))};mxEvent.addListener(b,"click",function(a){m.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(z,"click",function(a){q.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(f,"blur",u);mxEvent.addListener(f,"click",u);mxEvent.addListener(l,"blur",u);mxEvent.addListener(l,"click",u);mxEvent.addListener(q,"change",u);mxEvent.addListener(m,"change",u);mxEvent.addListener(r,"change",function(a){t="custom"==r.value;
+u(a,!0)});u();return{set:function(a){e=a;k(null,null,!0)},get:function(){return x},widthInput:f,heightInput:l}};
 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 (279 mm x 432 mm)",format:new mxRectangle(0,0,1100,1700)},{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:"custom",title:mxResources.get("custom"),format:null}]};
 (function(){mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph;if(null!=a.container&&!a.transparentBackground){if(a.pageVisible){var b=this.getBackgroundPageBounds();if(null==this.backgroundPageShape){for(var c=a.container.firstChild;null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.nextSibling;null!=c&&(this.backgroundPageShape=this.createBackgroundPageShape(b),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!mxClient.IS_QUIRKS,this.backgroundPageShape.dialect=
@@ -2047,12 +2049,12 @@ null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackground
 d="url("+this.gridImage+")";var l=c=0;null!=a.view.backgroundPageShape&&(l=this.getBackgroundPageBounds(),c=1+l.x,l=1+l.y);f=-Math.round(f-mxUtils.mod(this.translate.x*this.scale-c,f))+"px "+-Math.round(f-mxUtils.mod(this.translate.y*this.scale-l,f))+"px"}c=a.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=f,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor=
 b,a.container.className="geDiagramContainer geDiagramBackdrop",c.style.backgroundImage="none",c.style.backgroundColor=""):(a.container.className="geDiagramContainer",c.style.backgroundPosition=f,c.style.backgroundColor=b,c.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var c=this.gridSteps*b,d=[],f=1;f<this.gridSteps;f++){var l=f*b;d.push("M 0 "+l+" L "+c+" "+l+" M "+l+" 0 L "+l+" "+c)}return'<svg width="'+
 c+'" height="'+c+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+c+'" height="'+c+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+c+" 0 L 0 0 0 "+c+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,c){a.apply(this,arguments);if(null!=this.shiftPreview1){var e=
-this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var d=this.gridSize*this.view.scale*this.view.gridSteps,d=-Math.round(d-mxUtils.mod(this.view.translate.x*this.view.scale+b,d))+"px "+-Math.round(d-mxUtils.mod(this.view.translate.y*this.view.scale+c,d))+"px";e.style.backgroundPosition=d}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,f=this.view.translate,e=this.pageFormat,n=d*this.pageScale,g=this.view.getBackgroundPageBounds();b=g.width;c=g.height;var p=
-new mxRectangle(d*f.x,d*f.y,e.width*n,e.height*n),k=(a=a&&Math.min(p.width,p.height)>this.minPageBreakDist)?Math.ceil(c/p.height)-1:0,r=a?Math.ceil(b/p.width)-1:0,t=g.x+b,y=g.y+c;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<r&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var d=a==this.horizontalPageBreaks?k:r,b=0;b<=d;b++){var f=a==this.horizontalPageBreaks?[new mxPoint(Math.round(g.x),Math.round(g.y+(b+1)*p.height)),
-new mxPoint(Math.round(t),Math.round(g.y+(b+1)*p.height))]:[new mxPoint(Math.round(g.x+(b+1)*p.width),Math.round(g.y)),new mxPoint(Math.round(g.x+(b+1)*p.width),Math.round(y))];null!=a[b]?(a[b].points=f,a[b].redraw()):(f=new mxPolyline(f,this.pageBreakColor),f.dialect=this.dialect,f.isDashed=this.pageBreakDashed,f.pointerEvents=!1,f.init(this.view.backgroundPane),f.redraw(),a[b]=f)}for(b=d;b<a.length;b++)a[b].destroy();a.splice(d,a.length-d)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
+this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var d=this.gridSize*this.view.scale*this.view.gridSteps,d=-Math.round(d-mxUtils.mod(this.view.translate.x*this.view.scale+b,d))+"px "+-Math.round(d-mxUtils.mod(this.view.translate.y*this.view.scale+c,d))+"px";e.style.backgroundPosition=d}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,f=this.view.translate,e=this.pageFormat,p=d*this.pageScale,g=this.view.getBackgroundPageBounds();b=g.width;c=g.height;var n=
+new mxRectangle(d*f.x,d*f.y,e.width*p,e.height*p),k=(a=a&&Math.min(n.width,n.height)>this.minPageBreakDist)?Math.ceil(c/n.height)-1:0,y=a?Math.ceil(b/n.width)-1:0,t=g.x+b,x=g.y+c;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<y&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var d=a==this.horizontalPageBreaks?k:y,b=0;b<=d;b++){var f=a==this.horizontalPageBreaks?[new mxPoint(Math.round(g.x),Math.round(g.y+(b+1)*n.height)),
+new mxPoint(Math.round(t),Math.round(g.y+(b+1)*n.height))]:[new mxPoint(Math.round(g.x+(b+1)*n.width),Math.round(g.y)),new mxPoint(Math.round(g.x+(b+1)*n.width),Math.round(x))];null!=a[b]?(a[b].points=f,a[b].redraw()):(f=new mxPolyline(f,this.pageBreakColor),f.dialect=this.dialect,f.isDashed=this.pageBreakDashed,f.pointerEvents=!1,f.init(this.view.backgroundPane),f.redraw(),a[b]=f)}for(b=d;b<a.length;b++)a[b].destroy();a.splice(d,a.length-d)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
 var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,c,e){for(var d=0;d<c.length;d++)if(this.graph.getModel().isVertex(c[d])){var f=this.graph.getCellGeometry(c[d]);if(null!=f&&f.relative)return!1}return b.apply(this,arguments)};var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=e.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,c){return this.isConnecting()?
-!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,f=this.graph.pageScale,e=d.width*f,d=d.height*f,f=Math.floor(Math.min(0,b)/e),n=Math.floor(Math.min(0,
-c)/d);return new mxRectangle(this.scale*(this.translate.x+f*e),this.scale*(this.translate.y+n*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/e)-f)*e,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-n)*d)};var c=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){c.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=
+!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,f=this.graph.pageScale,e=d.width*f,d=d.height*f,f=Math.floor(Math.min(0,b)/e),p=Math.floor(Math.min(0,
+c)/d);return new mxRectangle(this.scale*(this.translate.x+f*e),this.scale*(this.translate.y+p*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/e)-f)*e,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-p)*d)};var c=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){c.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=
 a+"px",this.view.backgroundPageShape.node.style.marginTop=b+"px")};var k=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,c,d,f,e){var l=k.apply(this,arguments);null==e||e||mxEvent.addListener(l,"mousedown",function(a){mxEvent.consume(a)});return l};var m=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(a){var b=this.graph.getModel(),c=b.getParent(this.graph.getSelectionCell()),d=m.apply(this,arguments),f=b.getParent(d);
 if(null==c||c!=d&&c!=f)for(;!this.graph.isCellSelected(d)&&!this.graph.isCellSelected(f)&&b.isVertex(f)&&!this.graph.isContainer(f);)d=f,f=this.graph.getModel().getParent(d);return d};var q=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var c=q.apply(this,arguments);if(!c)for(var d=this.graph.getModel(),f=d.getParent(a);null!=f;){if(this.graph.isCellSelected(f)&&d.isVertex(f)){c=!0;break}f=d.getParent(f)}return c};mxGraphHandler.prototype.selectDelayed=
 function(a){if(!this.graph.popupMenuHandler.isPopupTrigger(a)){var b=a.getCell();null==b&&(b=this.cell);var c=this.graph.view.getState(b);if(null==c||!a.isSource(c.control))for(var c=this.graph.getModel(),d=c.getParent(b);!this.graph.isCellSelected(d)&&c.isVertex(d);)b=d,d=c.getParent(b);this.graph.selectCellForEvent(b,a.getEvent())}};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(a){a=a.getCell();for(var b=this.graph.getModel(),c=b.getParent(a);b.isVertex(c)&&!this.graph.isContainer(c);)this.graph.isCellSelected(c)&&
@@ -2063,17 +2065,17 @@ mxEvent.getSource(a);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)
 this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-d.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var m=!1,q=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,d){return m||q.apply(this,
 arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32==a.which?(m=!0,this.hoverIcons.reset(),c.container.style.cursor="move",c.isEditing()||mxEvent.getSource(a)!=c.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){c.container.style.cursor="";m=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var r=c.panningHandler.isForcePanningEvent;
 c.panningHandler.isForcePanningEvent=function(a){return r.apply(this,arguments)||m||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var v=c.cellEditor.isStopEditingEvent;c.cellEditor.isStopEditingEvent=function(a){return v.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||
-mxClient.IS_SF&&mxEvent.isShiftDown(a))};var z=!1,d=null,f=null,l=null,n=mxUtils.bind(this,function(){if(null!=this.toolbar&&z!=c.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==l)this.toolbar.createTextToolbar();else{for(var g=0;g<l.length;g++)this.toolbar.container.appendChild(l[g]);this.toolbar.fontMenu=
-d;this.toolbar.sizeMenu=f}z=c.cellEditor.isContentEditing();d=a;f=e;l=b}}),g=this,p=c.cellEditor.startEditing;c.cellEditor.startEditing=function(){p.apply(this,arguments);n();if(c.cellEditor.isContentEditing()){var a=!1,d=function(){a||(a=!0,window.setTimeout(function(){for(var d=c.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;if(null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=g.toolbar)){var b=d.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length-
-1)&&(b=b.substring(0,b.length-1));g.toolbar.setFontName(b);g.toolbar.setFontSize(parseInt(d.fontSize))}a=!1},0))};mxEvent.addListener(c.cellEditor.textarea,"input",d);mxEvent.addListener(c.cellEditor.textarea,"touchend",d);mxEvent.addListener(c.cellEditor.textarea,"mouseup",d);mxEvent.addListener(c.cellEditor.textarea,"keyup",d);d()}};var B=c.cellEditor.stopEditing;c.cellEditor.stopEditing=function(a,d){B.apply(this,arguments);n()};c.container.setAttribute("tabindex","0");c.container.style.cursor=
-"default";if(window.self===window.top&&null!=c.container.parentNode)try{c.container.focus()}catch(S){}var x=c.fireMouseEvent;c.fireMouseEvent=function(a,d,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();x.apply(this,arguments)};c.popupMenuHandler.autoExpand=!0;null!=this.menus&&(c.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,d,b){this.menus.createPopupMenu(a,d,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){c.popupMenuHandler.hideMenu()}));this.keyHandler=
-this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var t="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),y="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var d=c.view.getState(a);if(null!=d){a=a.clone();a.style="";a=c.getCellStyle(a);var b=[],f=[],e;for(e in d.style)a[e]!=d.style[e]&&(b.push(d.style[e]),f.push(e));e=c.getModel().getStyle(d.cell);for(var g=null!=e?e.split(";"):[],l=0;l<
+mxClient.IS_SF&&mxEvent.isShiftDown(a))};var z=!1,d=null,f=null,l=null,p=mxUtils.bind(this,function(){if(null!=this.toolbar&&z!=c.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==l)this.toolbar.createTextToolbar();else{for(var g=0;g<l.length;g++)this.toolbar.container.appendChild(l[g]);this.toolbar.fontMenu=
+d;this.toolbar.sizeMenu=f}z=c.cellEditor.isContentEditing();d=a;f=e;l=b}}),g=this,n=c.cellEditor.startEditing;c.cellEditor.startEditing=function(){n.apply(this,arguments);p();if(c.cellEditor.isContentEditing()){var a=!1,d=function(){a||(a=!0,window.setTimeout(function(){for(var d=c.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;if(null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=g.toolbar)){var b=d.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length-
+1)&&(b=b.substring(0,b.length-1));g.toolbar.setFontName(b);g.toolbar.setFontSize(parseInt(d.fontSize))}a=!1},0))};mxEvent.addListener(c.cellEditor.textarea,"input",d);mxEvent.addListener(c.cellEditor.textarea,"touchend",d);mxEvent.addListener(c.cellEditor.textarea,"mouseup",d);mxEvent.addListener(c.cellEditor.textarea,"keyup",d);d()}};var A=c.cellEditor.stopEditing;c.cellEditor.stopEditing=function(a,d){A.apply(this,arguments);p()};c.container.setAttribute("tabindex","0");c.container.style.cursor=
+"default";if(window.self===window.top&&null!=c.container.parentNode)try{c.container.focus()}catch(S){}var y=c.fireMouseEvent;c.fireMouseEvent=function(a,d,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();y.apply(this,arguments)};c.popupMenuHandler.autoExpand=!0;null!=this.menus&&(c.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,d,b){this.menus.createPopupMenu(a,d,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){c.popupMenuHandler.hideMenu()}));this.keyHandler=
+this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var t="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),x="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var d=c.view.getState(a);if(null!=d){a=a.clone();a.style="";a=c.getCellStyle(a);var b=[],f=[],e;for(e in d.style)a[e]!=d.style[e]&&(b.push(d.style[e]),f.push(e));e=c.getModel().getStyle(d.cell);for(var g=null!=e?e.split(";"):[],l=0;l<
 g.length;l++){var n=g[l],p=n.indexOf("=");0<=p&&(e=n.substring(0,p),n=n.substring(p+1),null!=a[e]&&"none"==n&&(b.push(n),f.push(e)))}c.getModel().isEdge(d.cell)?c.currentEdgeStyle={}:c.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",f,"values",b,"cells",[d.cell]))}};this.clearDefaultStyle=function(){c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",
-[],"cells",[]))};var u=["fontFamily","fontSize","fontColor"],A="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],u,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(b=0;b<D[a].length;b++)t.push(D[a][b]);for(a=0;a<y.length;a++)0>mxUtils.indexOf(t,
-y[a])&&t.push(y[a]);var U=function(a,d){var b=c.getModel();b.beginUpdate();try{if(d)for(var f=b.isEdge(n),e=f?c.currentEdgeStyle:c.currentVertexStyle,f=["fontSize","fontFamily","fontColor"],g=0;g<f.length;g++){var l=e[f[g]];null!=l&&c.setCellStyles(f[g],l,a)}else for(l=0;l<a.length;l++){for(var n=a[l],p=b.getStyle(n),u=null!=p?p.split(";"):[],J=t.slice(),g=0;g<u.length;g++){var k=u[g],B=k.indexOf("=");if(0<=B){var A=k.substring(0,B),x=mxUtils.indexOf(J,A);0<=x&&J.splice(x,1);for(var r=0;r<D.length;r++){var m=
-D[r];if(0<=mxUtils.indexOf(m,A))for(var q=0;q<m.length;q++){var S=mxUtils.indexOf(J,m[q]);0<=S&&J.splice(S,1)}}}}for(var e=(f=b.isEdge(n))?c.currentEdgeStyle:c.currentVertexStyle,U=b.getStyle(n),g=0;g<J.length;g++){var A=J[g],v=e[A];null==v||"shape"==A&&!f||f&&!(0>mxUtils.indexOf(y,A))||(U=mxUtils.setStyle(U,A,v))}b.setStyle(n,U)}}finally{b.endUpdate()}};c.addListener("cellsInserted",function(a,d){U(d.getProperty("cells"))});c.addListener("textInserted",function(a,d){U(d.getProperty("cells"),!0)});
+[],"cells",[]))};var u=["fontFamily","fontSize","fontColor"],D="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),B=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],u,["opacity"],["align"],["html"]];for(a=0;a<B.length;a++)for(b=0;b<B[a].length;b++)t.push(B[a][b]);for(a=0;a<x.length;a++)0>mxUtils.indexOf(t,
+x[a])&&t.push(x[a]);var U=function(a,d){var b=c.getModel();b.beginUpdate();try{if(d)for(var f=b.isEdge(n),e=f?c.currentEdgeStyle:c.currentVertexStyle,f=["fontSize","fontFamily","fontColor"],g=0;g<f.length;g++){var l=e[f[g]];null!=l&&c.setCellStyles(f[g],l,a)}else for(l=0;l<a.length;l++){for(var n=a[l],p=b.getStyle(n),u=null!=p?p.split(";"):[],J=t.slice(),g=0;g<u.length;g++){var k=u[g],A=k.indexOf("=");if(0<=A){var D=k.substring(0,A),y=mxUtils.indexOf(J,D);0<=y&&J.splice(y,1);for(var m=0;m<B.length;m++){var r=
+B[m];if(0<=mxUtils.indexOf(r,D))for(var q=0;q<r.length;q++){var S=mxUtils.indexOf(J,r[q]);0<=S&&J.splice(S,1)}}}}for(var e=(f=b.isEdge(n))?c.currentEdgeStyle:c.currentVertexStyle,U=b.getStyle(n),g=0;g<J.length;g++){var D=J[g],v=e[D];null==v||"shape"==D&&!f||f&&!(0>mxUtils.indexOf(x,D))||(U=mxUtils.setStyle(U,D,v))}b.setStyle(n,U)}}finally{b.endUpdate()}};c.addListener("cellsInserted",function(a,d){U(d.getProperty("cells"))});c.addListener("textInserted",function(a,d){U(d.getProperty("cells"),!0)});
 c.connectionHandler.addListener(mxEvent.CONNECT,function(a,d){var b=[d.getProperty("cell")];d.getProperty("terminalInserted")&&b.push(d.getProperty("terminal"));U(b)});this.addListener("styleChanged",mxUtils.bind(this,function(a,d){var b=d.getProperty("cells"),f=!1,e=!1;if(0<b.length)for(var g=0;g<b.length&&(f=c.getModel().isVertex(b[g])||f,!(e=c.getModel().isEdge(b[g])||e)||!f);g++);else e=f=!0;for(var b=d.getProperty("keys"),l=d.getProperty("values"),g=0;g<b.length;g++){var n=0<=mxUtils.indexOf(u,
-b[g]);if("strokeColor"!=b[g]||null!=l[g]&&"none"!=l[g])if(0<=mxUtils.indexOf(y,b[g]))e||0<=mxUtils.indexOf(A,b[g])?null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=l[g]:f&&0<=mxUtils.indexOf(t,b[g])&&(null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g]);else if(0<=mxUtils.indexOf(t,b[g])){if(f||n)null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g];if(e||n||0<=mxUtils.indexOf(A,b[g]))null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=
+b[g]);if("strokeColor"!=b[g]||null!=l[g]&&"none"!=l[g])if(0<=mxUtils.indexOf(x,b[g]))e||0<=mxUtils.indexOf(D,b[g])?null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=l[g]:f&&0<=mxUtils.indexOf(t,b[g])&&(null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g]);else if(0<=mxUtils.indexOf(t,b[g])){if(f||n)null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g];if(e||n||0<=mxUtils.indexOf(D,b[g]))null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=
 l[g]}}null!=this.toolbar&&(this.toolbar.setFontName(c.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(c.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==c.currentEdgeStyle.edgeStyle&&"1"==c.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==c.currentEdgeStyle.edgeStyle||"none"==c.currentEdgeStyle.edgeStyle||null==
 c.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==c.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==c.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&
 (this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==c.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==c.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==c.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",c.currentEdgeStyle.shape,c.currentEdgeStyle[mxConstants.STYLE_STARTARROW],
@@ -2096,28 +2098,29 @@ EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipb
 !1,null):e=c.apply(this,arguments);a.updatePasteActionStates();return e};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);a.updatePasteActionStates()};var m=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,c){m.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20;
 EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),d=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*d.width),this.scale*(this.translate.y+a.y*d.height),this.scale*a.width*d.width,
 this.scale*a.height*d.height)};a.getPreferredPageSize=function(a,d,b){a=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,a.width*d.width,a.height*d.height)};var b=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(d,b,f,c){if(null!=a.container){f=null!=f?f:0;c=null!=c?c:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),e=mxUtils.hasScrollbars(a.container),l=a.view.translate,n=a.view.scale,p=mxRectangle.fromRectangle(g);
-p.x=p.x/n-l.x;p.y=p.y/n-l.y;p.width/=n;p.height/=n;var l=a.container.scrollTop,u=a.container.scrollLeft,y=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)y+=3;var t=a.container.offsetWidth-y,y=a.container.offsetHeight-y;d=d?Math.max(.3,Math.min(b||1,t/p.width)):n;b=(t-d*p.width)/2/d;var J=0==this.lightboxVerticalDivider?0:(y-d*p.height)/this.lightboxVerticalDivider/d;e&&(b=Math.max(b,0),J=Math.max(J,0));if(e||g.width<t||g.height<y)a.view.scaleAndTranslate(d,
-Math.floor(b-p.x),Math.floor(J-p.y)),a.container.scrollTop=l*d/n,a.container.scrollLeft=u*d/n;else if(0!=f||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+f/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var c=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",c);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",c)});this.editor.addListener("resetGraphView",
-mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){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.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var k=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(a.container);this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||
-0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",k);k();var m=0,k=mxUtils.bind(this,function(a,d,b){m++;var f=document.createElement("span");f.style.paddingLeft="8px";f.style.paddingRight="8px";f.style.cursor="pointer";mxEvent.addListener(f,"click",a);null!=b&&f.setAttribute("title",b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",d);f.appendChild(a);this.chromelessToolbar.appendChild(f);
-return f}),q=k(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),r=document.createElement("div");r.style.display="inline-block";r.style.verticalAlign="top";r.style.fontFamily="Helvetica,Arial";r.style.marginTop="8px";r.style.fontSize="14px";r.style.color="#ffffff";this.chromelessToolbar.appendChild(r);var v=k(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,
-mxResources.get("nextPage")),z=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(r.innerHTML="",mxUtils.write(r,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});q.style.paddingLeft="0px";q.style.paddingRight="4px";v.style.paddingLeft="4px";v.style.paddingRight="0px";var d=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(v.style.display="",q.style.display="",r.style.display="inline-block"):
-(v.style.display="none",q.style.display="none",r.style.display="none");z()});this.editor.addListener("resetGraphView",d);this.editor.addListener("pageSelected",z);k(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");k(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");k(mxUtils.bind(this,
-function(d){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(d)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var f=null,l=null,n=mxUtils.bind(this,function(a){null!=f&&(window.clearTimeout(f),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);f=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);f=null;l=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
-"none";l=null}),600)}),a||200)}),g=mxUtils.bind(this,function(a){null!=f&&(window.clearTimeout(f),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var p=k(mxUtils.bind(this,function(d){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,
-"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var b=p.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";
-mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(d)}),Editor.layersLargeImage,mxResources.get("layers")),B=a.getModel();B.addListener(mxEvent.CHANGE,function(){p.style.display=1<B.getChildCount(B.root)?
-"":"none"})}this.addChromelessToolbarItems(k);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||k(mxUtils.bind(this,function(d){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(d)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(d=0;d<this.lightboxToolbarActions.length;d++){var x=
-this.lightboxToolbarActions[d];k(x.fn,x.icon,x.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||k(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?
-"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||g(30),n())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100);mxEvent.consume(a)}));
-mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||g(30)}));var t=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,d){},mouseUp:function(d,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<t&&Math.abs(this.scrollTop-
-a.container.scrollTop)<t&&Math.abs(this.startX-b.getGraphX())<t&&Math.abs(this.startY-b.getGraphY())<t&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?n():g(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*d.width;this.translate.y=
-a.y-(this.y0||0)*d.height}y.apply(this,arguments)};var u=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),b=this.getPagePadding(),f=this.getPageSize(),c=Math.ceil(2*b.x+d.width*f.width),g=Math.ceil(2*b.y+d.height*f.height),e=a.minimumGraphSize;if(null==e||e.width!=c||e.height!=g)a.minimumGraphSize=new mxRectangle(0,0,c,g);c=b.x-d.x*f.width;b=b.y-d.y*f.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y==
-b?u.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=a.view.translate.x,f=a.view.translate.y,a.view.setTranslate(c,b),a.container.scrollLeft+=Math.round((c-d)*a.view.scale),a.container.scrollTop+=Math.round((b-f)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var A=null;a.lazyZoom=function(d){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);d?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=
-(this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*
-this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var d=mxUtils.getOffset(a.container),f=0,c=0;null!=A&&(f=a.container.offsetWidth/2-A.x+d.x,c=a.container.offsetHeight/2-A.y+d.y);d=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=d&&(null!=b&&e.chromelessResize(!1,null,f*(this.cumulativeZoomFactor-1),c*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==f&&0==c||(a.container.scrollLeft-=f*(this.cumulativeZoomFactor-
-1),a.container.scrollTop-=c*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,b){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==a.container){A=new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d));a.lazyZoom(b);mxEvent.consume(d);break}f=f.parentNode}}))};
+p.x=p.x/n-l.x;p.y=p.y/n-l.y;p.width/=n;p.height/=n;var l=a.container.scrollTop,u=a.container.scrollLeft,x=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)x+=3;var J=a.container.offsetWidth-x,x=a.container.offsetHeight-x;d=d?Math.max(.3,Math.min(b||1,J/p.width)):n;b=(J-d*p.width)/2/d;var t=0==this.lightboxVerticalDivider?0:(x-d*p.height)/this.lightboxVerticalDivider/d;e&&(b=Math.max(b,0),t=Math.max(t,0));if(e||g.width<J||g.height<x)a.view.scaleAndTranslate(d,
+Math.floor(b-p.x),Math.floor(t-p.y)),a.container.scrollTop=l*d/n,a.container.scrollLeft=u*d/n;else if(0!=f||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+f/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var c=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",c);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",c)});this.editor.addListener("resetGraphView",
+mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var k=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.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var m=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(a.container);
+this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",m);m();var q=0,m=mxUtils.bind(this,function(a,d,b){q++;var f=document.createElement("span");f.style.paddingLeft="8px";f.style.paddingRight="8px";f.style.cursor="pointer";mxEvent.addListener(f,"click",a);null!=b&&f.setAttribute("title",b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",
+d);f.appendChild(a);this.chromelessToolbar.appendChild(f);return f});null!=k.backBtn&&m(mxUtils.bind(this,function(a){window.location.href=k.backBtn.url;mxEvent.consume(a)}),Editor.backLargeImage,mxResources.get("goback",null,"Go Back"));var r=m(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),v=document.createElement("div");v.style.display="inline-block";v.style.verticalAlign="top";v.style.fontFamily=
+"Helvetica,Arial";v.style.marginTop="8px";v.style.fontSize="14px";v.style.color="#ffffff";this.chromelessToolbar.appendChild(v);var z=m(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),d=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(v.innerHTML="",mxUtils.write(v,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});r.style.paddingLeft="0px";
+r.style.paddingRight="4px";z.style.paddingLeft="4px";z.style.paddingRight="0px";var f=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(z.style.display="",r.style.display="",v.style.display="inline-block"):(z.style.display="none",r.style.display="none",v.style.display="none");d()});this.editor.addListener("resetGraphView",f);this.editor.addListener("pageSelected",d);m(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,
+mxResources.get("zoomOut")+" (Alt+Mousewheel)");m(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");m(mxUtils.bind(this,function(d){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(d)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var l=null,p=null,g=mxUtils.bind(this,function(a){null!=l&&(window.clearTimeout(l),
+fadeThead=null);null!=p&&(window.clearTimeout(p),fadeThead2=null);l=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);l=null;p=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";p=null}),600)}),a||200)}),n=mxUtils.bind(this,function(a){null!=l&&(window.clearTimeout(l),fadeThead=null);null!=p&&(window.clearTimeout(p),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||
+30)});if("1"==urlParams.layers){this.layersDialog=null;var A=m(mxUtils.bind(this,function(d){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var b=A.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius",
+"5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);
+this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(d)}),Editor.layersLargeImage,mxResources.get("layers")),y=a.getModel();y.addListener(mxEvent.CHANGE,function(){A.style.display=1<y.getChildCount(y.root)?"":"none"})}this.addChromelessToolbarItems(m);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||m(mxUtils.bind(this,function(d){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):
+a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(d)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(f=0;f<this.lightboxToolbarActions.length;f++){var t=this.lightboxToolbarActions[f];m(t.fn,t.icon,t.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||m(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");
+null!=k.refreshBtn&&m(mxUtils.bind(this,function(a){k.refreshBtn.url?window.location.href=k.refreshBtn.url:window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+(mxEvent.isShiftDown(a)||n(30),g())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?g():n(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?g():n(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+n(30)}));var x=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,d){},mouseUp:function(d,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<x&&Math.abs(this.scrollTop-a.container.scrollTop)<x&&Math.abs(this.startX-b.getGraphX())<x&&Math.abs(this.startY-b.getGraphY())<
+x&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?g():n(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var u=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*d.width;this.translate.y=a.y-(this.y0||0)*d.height}u.apply(this,arguments)};var D=a.sizeDidChange;a.sizeDidChange=function(){if(null!=
+this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),b=this.getPagePadding(),f=this.getPageSize(),c=Math.ceil(2*b.x+d.width*f.width),g=Math.ceil(2*b.y+d.height*f.height),e=a.minimumGraphSize;if(null==e||e.width!=c||e.height!=g)a.minimumGraphSize=new mxRectangle(0,0,c,g);c=b.x-d.x*f.width;b=b.y-d.y*f.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y==b?D.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=a.view.translate.x,
+f=a.view.translate.y,a.view.setTranslate(c,b),a.container.scrollLeft+=Math.round((c-d)*a.view.scale),a.container.scrollTop+=Math.round((b-f)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var B=null;a.lazyZoom=function(d){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);d?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=
+Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,
+function(){var d=mxUtils.getOffset(a.container),f=0,c=0;null!=B&&(f=a.container.offsetWidth/2-B.x+d.x,c=a.container.offsetHeight/2-B.y+d.y);d=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=d&&(null!=b&&e.chromelessResize(!1,null,f*(this.cumulativeZoomFactor-1),c*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==f&&0==c||(a.container.scrollLeft-=f*(this.cumulativeZoomFactor-1),a.container.scrollTop-=c*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=
+1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,b){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==a.container){B=new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d));a.lazyZoom(b);mxEvent.consume(d);break}f=f.parentNode}}))};
 EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))};
 EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return 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){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
@@ -2209,14 +2212,14 @@ this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constr
 function(){var a=d.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,f=this.graph.pageScale,e=c.width*f,c=c.height*f,f=this.graph.view.translate,g=this.graph.view.scale,l=this.graph.getPageLayout(),n=0;n<l.width;n++)b.push(new mxRectangle(((l.x+n)*e+f.x)*g,(l.y*c+f.y)*g,e*g,c*g));for(n=0;n<l.height;n++)b.push(new mxRectangle((l.x*e+f.x)*g,((l.y+n)*c+f.y)*g,e*g,c*g));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
 function(a,d){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var d=mxGraphHandler.prototype.getCells.apply(this,arguments),b=[],c=0;c<d.length;c++){var f=this.graph.view.getState(d[c]),f=null!=f?f.style:this.graph.getCellStyle(d[c]);
 "1"==mxUtils.getValue(f,"part","0")?(f=this.graph.model.getParent(d[c]),this.graph.model.isVertex(f)&&0>mxUtils.indexOf(d,f)&&b.push(f)):b.push(d[c])}return b};this.connectionHandler.createTargetVertex=function(a,d){var b=this.graph.view.getState(d),b=null!=b?b.style:this.graph.getCellStyle(d);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(d),this.graph.model.isVertex(b)&&(d=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var f=new mxRubberband(this);
-this.getRubberband=function(){return f};var l=(new Date).getTime(),n=0,g=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;g.apply(this,arguments);a!=this.currentState?(l=(new Date).getTime(),n=0):n=(new Date).getTime()-l};var p=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<n||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
-"outlineConnect","1"))&&p.apply(this,arguments)};var B=this.isToggleEvent;this.isToggleEvent=function(a){return B.apply(this,arguments)||mxEvent.isShiftDown(a)};var x=f.isForceRubberbandEvent;f.isForceRubberbandEvent=function(a){return x.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var t=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&
-(t=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=t)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!d||a.isConsumed())return y.apply(this,
+this.getRubberband=function(){return f};var l=(new Date).getTime(),p=0,g=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;g.apply(this,arguments);a!=this.currentState?(l=(new Date).getTime(),p=0):p=(new Date).getTime()-l};var n=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<p||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
+"outlineConnect","1"))&&n.apply(this,arguments)};var A=this.isToggleEvent;this.isToggleEvent=function(a){return A.apply(this,arguments)||mxEvent.isShiftDown(a)};var y=f.isForceRubberbandEvent;f.isForceRubberbandEvent=function(a){return y.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var t=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&
+(t=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=t)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var x=this.click;this.click=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!d||a.isConsumed())return x.apply(this,
 arguments);d=d?a.sourceState.cell:a.getCell();null!=d&&(d=this.getLinkForCell(d),null!=d&&(this.isCustomLink(d)?this.customLinkClicked(d):this.openLink(d)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(d?a.sourceState.cell:a.getCell())};var u=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=
-this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,d){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,d);return b};this.getAllCells=function(a,d,b,c,f,e){e=null!=e?e:[];if(0<b||0<c){var g=this.getModel(),l=a+b,n=d+c;null==f&&(f=this.getCurrentRoot(),null==f&&(f=g.getRoot()));if(null!=f)for(var p=g.getChildCount(f),u=0;u<p;u++){var y=g.getChildAt(f,u),t=this.view.getState(y);if(null!=
-t&&this.isCellVisible(y)&&"1"!=mxUtils.getValue(t.style,"locked","0")){var k=mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION)||0;0!=k&&(t=mxUtils.getBoundingBox(t,k));(g.isEdge(y)||g.isVertex(y))&&t.x>=a&&t.y+t.height<=n&&t.y>=d&&t.x+t.width<=l&&e.push(y);this.getAllCells(a,d,b,c,y,e)}}}return e};var A=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,d,b){return this.graph.isCellSelected(a)?!1:A.apply(this,arguments)};this.isCellLocked=function(a){for(a=
-this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var D=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")){var b=d.getProperty("event").getState();D=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,d){if(!mxEvent.isMultiTouchEvent(d)){var b=
-d.getProperty("event"),c=d.getProperty("cell");null==c?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),f.start(b.x,b.y)):null!=D?this.addSelectionCells(D):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);D=null;d.consume()}}));this.connectionHandler.selectCells=function(a,d){this.graph.setSelectionCell(d||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,d){return d&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,
+this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,d){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,d);return b};this.getAllCells=function(a,d,b,c,f,e){e=null!=e?e:[];if(0<b||0<c){var g=this.getModel(),l=a+b,n=d+c;null==f&&(f=this.getCurrentRoot(),null==f&&(f=g.getRoot()));if(null!=f)for(var p=g.getChildCount(f),u=0;u<p;u++){var x=g.getChildAt(f,u),t=this.view.getState(x);if(null!=
+t&&this.isCellVisible(x)&&"1"!=mxUtils.getValue(t.style,"locked","0")){var k=mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION)||0;0!=k&&(t=mxUtils.getBoundingBox(t,k));(g.isEdge(x)||g.isVertex(x))&&t.x>=a&&t.y+t.height<=n&&t.y>=d&&t.x+t.width<=l&&e.push(x);this.getAllCells(a,d,b,c,x,e)}}}return e};var D=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,d,b){return this.graph.isCellSelected(a)?!1:D.apply(this,arguments)};this.isCellLocked=function(a){for(a=
+this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var B=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")){var b=d.getProperty("event").getState();B=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,d){if(!mxEvent.isMultiTouchEvent(d)){var b=
+d.getProperty("event"),c=d.getProperty("cell");null==c?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),f.start(b.x,b.y)):null!=B?this.addSelectionCells(B):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);B=null;d.consume()}}));this.connectionHandler.selectCells=function(a,d){this.graph.setSelectionCell(d||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,d){return d&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,
 mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var U=this.updateMouseEvent;this.updateMouseEvent=function(a){a=U.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};
 Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;
 Graph.createSvgImage=function(a,b,e){e=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),a,b)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;
@@ -2247,8 +2250,8 @@ Graph.prototype.isLabelMovable=function(a){var b=this.view.getState(a),b=null!=b
 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,e){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 c=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,m=/[^-+\dA-Z]/g,q=function(a,d){a=String(a);for(d=d||2;a.length<d;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(c.masks[b]||b||c.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),e=!0);var r=e?"getUTC":"get",v=a[r+"Date"](),z=a[r+"Day"](),d=a[r+"Month"](),f=a[r+"FullYear"](),l=a[r+"Hours"](),n=a[r+"Minutes"](),g=a[r+"Seconds"](),r=a[r+"Milliseconds"](),p=e?0:a.getTimezoneOffset(),B={d:v,dd:q(v),ddd:c.i18n.dayNames[z],dddd:c.i18n.dayNames[z+7],m:d+1,mm:q(d+1),mmm:c.i18n.monthNames[d],mmmm:c.i18n.monthNames[d+
-12],yy:String(f).slice(2),yyyy:f,h:l%12||12,hh:q(l%12||12),H:l,HH:q(l),M:n,MM:q(n),s:g,ss:q(g),l:q(r,3),L:q(99<r?Math.round(r/10):r),t:12>l?"a":"p",tt:12>l?"am":"pm",T:12>l?"A":"P",TT:12>l?"AM":"PM",Z:e?"UTC":(String(a).match(k)||[""]).pop().replace(m,""),o:(0<p?"-":"+")+q(100*Math.floor(Math.abs(p)/60)+Math.abs(p)%60,4),S:["th","st","nd","rd"][3<v%10?0:(10!=v%100-v%10)*v%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in B?B[a]:a.slice(1,
+/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(c.masks[b]||b||c.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),e=!0);var r=e?"getUTC":"get",v=a[r+"Date"](),z=a[r+"Day"](),d=a[r+"Month"](),f=a[r+"FullYear"](),l=a[r+"Hours"](),p=a[r+"Minutes"](),g=a[r+"Seconds"](),r=a[r+"Milliseconds"](),n=e?0:a.getTimezoneOffset(),A={d:v,dd:q(v),ddd:c.i18n.dayNames[z],dddd:c.i18n.dayNames[z+7],m:d+1,mm:q(d+1),mmm:c.i18n.monthNames[d],mmmm:c.i18n.monthNames[d+
+12],yy:String(f).slice(2),yyyy:f,h:l%12||12,hh:q(l%12||12),H:l,HH:q(l),M:p,MM:q(p),s:g,ss:q(g),l:q(r,3),L:q(99<r?Math.round(r/10):r),t:12>l?"a":"p",tt:12>l?"am":"pm",T:12>l?"A":"P",TT:12>l?"AM":"PM",Z:e?"UTC":(String(a).match(k)||[""]).pop().replace(m,""),o:(0<n?"-":"+")+q(100*Math.floor(Math.abs(n)/60)+Math.abs(n)%60,4),S:["th","st","nd","rd"][3<v%10?0:(10!=v%100-v%10)*v%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in A?A[a]:a.slice(1,
 a.length-1)})};
 Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),e=b.getChildCount(b.root),c=0;c<e;c++)mxUtils.bind(this,function(c){var e=document.createElement("div");e.style.overflow="hidden";e.style.textOverflow="ellipsis";e.style.padding="2px";e.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");b.isVisible(c)&&(k.setAttribute("checked","checked"),
 k.defaultChecked=!0);e.appendChild(k);var r=this.convertValueToString(c)||mxResources.get("background")||"Background";e.setAttribute("title",r);mxUtils.write(e,r);a.appendChild(e);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");b.setVisible(c,k.checked)})})(b.getChildAt(b.root,c));return a};
@@ -2258,9 +2261,9 @@ Graph.prototype.selectCellsForConnectVertex=function(a,b,e){2==a.length&&this.mo
 Graph.prototype.connectVertex=function(a,b,e,c,k,m){m=m?m:!1;var q=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(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(q.x+=a.geometry.width/2,q.y-=e):b==mxConstants.DIRECTION_SOUTH?(q.x+=a.geometry.width/2,q.y+=a.geometry.height+e):(q.x=b==mxConstants.DIRECTION_WEST?q.x-e:q.x+(a.geometry.width+e),q.y+=a.geometry.height/2);e=this.view.getState(this.model.getParent(a));
 var r=this.view.scale,v=this.view.translate,z=v.x*r,v=v.y*r;null!=e&&this.model.isVertex(e.cell)&&(z=e.x,v=e.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(q.x+=a.parent.geometry.x,q.y+=a.parent.geometry.y);m=m||mxEvent.isControlDown(c)&&!k?null:this.getCellAt(z+q.x*r,v+q.y*r);this.model.isAncestor(m,a)&&(m=null);for(e=m;null!=e;){if(this.isCellLocked(e)){m=null;break}e=this.model.getParent(e)}null!=m&&(e=this.view.getState(a),r=this.view.getState(m),null!=e&&null!=r&&mxUtils.intersects(e,
 r)&&(m=null));if(k=!mxEvent.isShiftDown(c)||k)b==mxConstants.DIRECTION_NORTH?q.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?q.y+=a.geometry.height/2:q.x=b==mxConstants.DIRECTION_WEST?q.x-a.geometry.width/2:q.x+a.geometry.width/2;null==m||this.isCellConnectable(m)||(e=this.getModel().getParent(m),this.getModel().isVertex(e)&&this.isCellConnectable(e)&&(m=e));if(m==a||this.model.isEdge(m)||!this.isCellConnectable(m))m=null;e=[];this.model.beginUpdate();try{r=m;if(null==r&&k){for(var z=a,d=
-this.getCellGeometry(a);null!=d&&d.relative;)z=this.getModel().getParent(z),d=this.getCellGeometry(z);var f=this.view.getState(z),l=null!=f?f.style:this.getCellStyle(z);if(mxUtils.getValue(l,"part",!1)){var n=this.model.getParent(z);this.model.isVertex(n)&&(z=n)}r=this.duplicateCells([z],!1)[0];d=this.getCellGeometry(r);null!=d&&(d.x=q.x-d.width/2,d.y=q.y-d.height/2)}d=null;null!=this.layoutManager&&(d=this.layoutManager.getLayout(this.model.getParent(a)));var g=mxEvent.isControlDown(c)&&k||null==
-m&&null!=d&&d.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,r,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var p=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=g.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==g.parent&&(p=c.parent.getIndex(c),this.model.add(c.parent,g,p))}null==m&&null!=r&&null!=d&&null!=a.parent&&d.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&
-(p=a.parent.getIndex(a),this.model.add(a.parent,r,p));null!=g&&e.push(g);null==m&&null!=r&&e.push(r);null==r&&null!=g&&g.geometry.setTerminalPoint(q,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}return e};
+this.getCellGeometry(a);null!=d&&d.relative;)z=this.getModel().getParent(z),d=this.getCellGeometry(z);var f=this.view.getState(z),l=null!=f?f.style:this.getCellStyle(z);if(mxUtils.getValue(l,"part",!1)){var p=this.model.getParent(z);this.model.isVertex(p)&&(z=p)}r=this.duplicateCells([z],!1)[0];d=this.getCellGeometry(r);null!=d&&(d.x=q.x-d.width/2,d.y=q.y-d.height/2)}d=null;null!=this.layoutManager&&(d=this.layoutManager.getLayout(this.model.getParent(a)));var g=mxEvent.isControlDown(c)&&k||null==
+m&&null!=d&&d.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,r,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var n=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=g.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==g.parent&&(n=c.parent.getIndex(c),this.model.add(c.parent,g,n))}null==m&&null!=r&&null!=d&&null!=a.parent&&d.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&
+(n=a.parent.getIndex(a),this.model.add(a.parent,r,n));null!=g&&e.push(g);null==m&&null!=r&&e.push(r);null==r&&null!=g&&g.geometry.setTerminalPoint(q,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}return e};
 Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],e,c;for(c in this.model.cells)if(e=this.model.cells[c],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(a.innerHTML=this.getLabel(e),e=mxUtils.extractTextWithWhitespace([a])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&b.push(e);return b.join(" ")};
 Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),e=a,c=null;null==c&&null!=e;)null!=e.value&&"object"==typeof e.value&&(c=e.hasAttribute(b)?null!=e.getAttribute(b)?e.getAttribute(b):"":null),e=this.model.getParent(e);return c||""}return a.value.getAttribute("label")||""}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};
@@ -2313,14 +2316,14 @@ this.setDisplay("");null!=this.currentState&&this.currentState!=a&&c<this.activa
 this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};
 (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,c){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=b.apply(this,arguments);null!=
 d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var e=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return e.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var c=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){c.apply(this,arguments);this.graph.model.isEdge(a.cell)&&
-1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var d=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(d,b,f){var e=new mxPoint(b,f);e.type=d;c.push(e);e=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==e||e.type!=d||e.x!=b||e.y!=f},n=.5*this.scale,d=!1,c=[],g=0;g<b.length-1;g++){for(var p=
-b[g+1],k=b[g],x=[],t=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,t.x,t.y,p.x,p.y)<1*this.scale*this.scale;)p=t,g++,t=b[g+2];for(var d=e(0,k.x,k.y)||d,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],A=u.absolutePoints;if(null!=A&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<A.length-1;u++){for(var D=A[u+1],r=A[u],t=A[u+2];u<A.length-2&&mxUtils.ptSegDistSq(r.x,r.y,t.x,t.y,D.x,D.y)<1*this.scale*this.scale;)D=t,u++,t=A[u+2];t=mxUtils.intersection(k.x,k.y,p.x,p.y,r.x,r.y,D.x,
-D.y);if(null!=t&&(Math.abs(t.x-r.x)>n||Math.abs(t.y-r.y)>n)&&(Math.abs(t.x-D.x)>n||Math.abs(t.y-D.y)>n)){D=t.x-k.x;r=t.y-k.y;t={distSq:D*D+r*r,x:t.x,y:t.y};for(D=0;D<x.length;D++)if(x[D].distSq>t.distSq){x.splice(D,0,t);t=null;break}null==t||0!=x.length&&x[x.length-1].x===t.x&&x[x.length-1].y===t.y||x.push(t)}}}for(u=0;u<x.length;u++)d=e(1,x[u].x,x[u].y)||d}t=b[b.length-1];d=e(0,t.x,t.y)||d}a.routedPoints=c;return d}return!1};var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,
-b,d){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,n=mxUtils.getValue(this.style,"jumpStyle","none"),g,p=!0,B=null,x=null;g=[];var t=null;a.begin();for(var y=
-0;y<this.state.routedPoints.length;y++){var u=this.state.routedPoints[y],A=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?A=b[0]:y==this.state.routedPoints.length-1&&(A=b[b.length-1]);var D=!1;if(null!=B&&1==u.type){var r=this.state.routedPoints[y+1],u=r.x/this.scale-A.x,r=r.y/this.scale-A.y,u=u*u+r*r;null==t&&(t=new mxPoint(A.x-B.x,A.y-B.y),x=Math.sqrt(t.x*t.x+t.y*t.y),t.x=t.x*e/x,t.y=t.y*e/x);u>e*e&&0<x&&(u=B.x-A.x,r=B.y-A.y,u=u*u+r*r,u>e*e&&(D=new mxPoint(A.x-t.x,A.y-t.y),u=new mxPoint(A.x+t.x,
-A.y+t.y),g.push(D),this.addPoints(a,g,d,c,!1,null,p),g=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,p=!1,"sharp"==n?(a.lineTo(D.x-t.y*g,D.y+t.x*g),a.lineTo(u.x-t.y*g,u.y+t.x*g),a.lineTo(u.x,u.y)):"arc"==n?(g*=1.3,a.curveTo(D.x-t.y*g,D.y+t.x*g,u.x-t.y*g,u.y+t.x*g,u.x,u.y)):(a.moveTo(u.x,u.y),p=!0),g=[u],D=!0))}else t=null;D||(g.push(A),B=A)}this.addPoints(a,g,d,c,!1,null,p);a.stroke()}};var m=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=
-function(a,b,d,c){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,c);var f=this.getNextPoint(a,d,c),e=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),p=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var k=Math.cos(-g),r=Math.sin(-g),f=mxUtils.getRotatedPoint(f,k,r,p);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[c?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:
-mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(b,f,0==g&&e,k);0!=g&&(k=Math.cos(g),r=Math.sin(g),f=mxUtils.getRotatedPoint(f,k,r,p));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,d,c,f),c)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,d,c,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);c=d=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var l=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==
+1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var d=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(d,b,f){var e=new mxPoint(b,f);e.type=d;c.push(e);e=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==e||e.type!=d||e.x!=b||e.y!=f},p=.5*this.scale,d=!1,c=[],g=0;g<b.length-1;g++){for(var n=
+b[g+1],k=b[g],y=[],t=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,t.x,t.y,n.x,n.y)<1*this.scale*this.scale;)n=t,g++,t=b[g+2];for(var d=e(0,k.x,k.y)||d,x=0;x<this.validEdges.length;x++){var u=this.validEdges[x],D=u.absolutePoints;if(null!=D&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<D.length-1;u++){for(var B=D[u+1],r=D[u],t=D[u+2];u<D.length-2&&mxUtils.ptSegDistSq(r.x,r.y,t.x,t.y,B.x,B.y)<1*this.scale*this.scale;)B=t,u++,t=D[u+2];t=mxUtils.intersection(k.x,k.y,n.x,n.y,r.x,r.y,B.x,
+B.y);if(null!=t&&(Math.abs(t.x-r.x)>p||Math.abs(t.y-r.y)>p)&&(Math.abs(t.x-B.x)>p||Math.abs(t.y-B.y)>p)){B=t.x-k.x;r=t.y-k.y;t={distSq:B*B+r*r,x:t.x,y:t.y};for(B=0;B<y.length;B++)if(y[B].distSq>t.distSq){y.splice(B,0,t);t=null;break}null==t||0!=y.length&&y[y.length-1].x===t.x&&y[y.length-1].y===t.y||y.push(t)}}}for(u=0;u<y.length;u++)d=e(1,y[u].x,y[u].y)||d}t=b[b.length-1];d=e(0,t.x,t.y)||d}a.routedPoints=c;return d}return!1};var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,
+b,d){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,p=mxUtils.getValue(this.style,"jumpStyle","none"),g,n=!0,A=null,y=null;g=[];var t=null;a.begin();for(var x=
+0;x<this.state.routedPoints.length;x++){var u=this.state.routedPoints[x],D=new mxPoint(u.x/this.scale,u.y/this.scale);0==x?D=b[0]:x==this.state.routedPoints.length-1&&(D=b[b.length-1]);var B=!1;if(null!=A&&1==u.type){var r=this.state.routedPoints[x+1],u=r.x/this.scale-D.x,r=r.y/this.scale-D.y,u=u*u+r*r;null==t&&(t=new mxPoint(D.x-A.x,D.y-A.y),y=Math.sqrt(t.x*t.x+t.y*t.y),t.x=t.x*e/y,t.y=t.y*e/y);u>e*e&&0<y&&(u=A.x-D.x,r=A.y-D.y,u=u*u+r*r,u>e*e&&(B=new mxPoint(D.x-t.x,D.y-t.y),u=new mxPoint(D.x+t.x,
+D.y+t.y),g.push(B),this.addPoints(a,g,d,c,!1,null,n),g=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,n=!1,"sharp"==p?(a.lineTo(B.x-t.y*g,B.y+t.x*g),a.lineTo(u.x-t.y*g,u.y+t.x*g),a.lineTo(u.x,u.y)):"arc"==p?(g*=1.3,a.curveTo(B.x-t.y*g,B.y+t.x*g,u.x-t.y*g,u.y+t.x*g,u.x,u.y)):(a.moveTo(u.x,u.y),n=!0),g=[u],B=!0))}else t=null;B||(g.push(D),A=D)}this.addPoints(a,g,d,c,!1,null,n);a.stroke()}};var m=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=
+function(a,b,d,c){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,c);var f=this.getNextPoint(a,d,c),e=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),n=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var k=Math.cos(-g),y=Math.sin(-g),f=mxUtils.getRotatedPoint(f,k,y,n);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[c?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:
+mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(b,f,0==g&&e,k);0!=g&&(k=Math.cos(g),y=Math.sin(g),f=mxUtils.getRotatedPoint(f,k,y,n));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,d,c,f),c)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,d,c,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);c=d=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var l=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==
 c||l<c)d=g,c=l}}null!=d&&(e=d)}return e};var q=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,d){var c=q.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=d.state&&(c=d.state.view.graph.replacePlaceholders(d.state.cell,c));return c};var r=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=
 b&&"stencil("==b.substring(0,8))try{var d=b.substring(8,b.length-1),c=mxUtils.parseXml(a.view.graph.decompress(d));return new mxShape(new mxStencil(c.documentElement))}catch(l){null!=window.console&&console.log("Error in shape: "+l)}}return r.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
 mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var e=mxStencilRegistry.getBasenameForStencil(a);if(null!=e){b=mxStencilRegistry.libraries[e];if(null!=b){if(null==mxStencilRegistry.packages[e]){for(var c=0;c<b.length;c++){var k=b[c];if(".xml"==k.toLowerCase().substring(k.length-4,k.length))mxStencilRegistry.loadStencilSet(k,null);else if(".js"==k.toLowerCase().substring(k.length-3,k.length))try{if(mxStencilRegistry.allowEval){var m=
@@ -2343,9 +2346,9 @@ if(c){this.isGridEnabled()&&(d=this.snap(d),b=this.snap(b));var g=this.getBoundi
 d?d.style:this.getCellStyle(a);null!=d&&(d=mxUtils.getValue(d,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,d,[a]))}};Graph.prototype.isValidRoot=function(a){for(var d=this.model.getChildCount(a),b=0,c=0;c<d;c++){var f=this.model.getChildAt(a,c);this.model.isVertex(f)&&(f=this.getCellGeometry(f),null==f||f.relative||b++)}return 0<b||this.isContainer(a)};Graph.prototype.isValidDropTarget=
 function(a){var d=this.view.getState(a),d=null!=d?d.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(d,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(d,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&&
 null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(a){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(a){var d=this.getModel(),b=[];d.beginUpdate();try{for(var c=
-0;c<a.length;c++){var f=a[c];if(d.isEdge(f)){var e=d.getTerminal(f,!0),g=d.getTerminal(f,!1);d.setTerminal(f,g,!0);d.setTerminal(f,e,!1);var l=d.getGeometry(f);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var n=l.getTerminalPoint(!0),p=l.getTerminalPoint(!1);l.setTerminalPoint(n,!1);l.setTerminalPoint(p,!0);d.setGeometry(f,l);var u=this.view.getState(f),y=this.view.getState(e),t=this.view.getState(g);if(null!=u){var J=null!=y?this.getConnectionConstraint(u,y,!0):null,k=null!=t?this.getConnectionConstraint(u,
-t,!1):null;this.setConnectionConstraint(f,e,!0,k);this.setConnectionConstraint(f,g,!1,J)}b.push(f)}}else if(d.isVertex(f)&&(l=this.getCellGeometry(f),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=l.height/2-l.width/2;var A=l.width;l.width=l.height;l.height=A;d.setGeometry(f,l);var r=this.view.getState(f);if(null!=r){var B=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==B?B="south":"south"==B?B="west":"west"==B?B="north":"north"==B&&(B="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
-B,[f])}b.push(f)}}}finally{d.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var d=this.model.getDescendants(a.cell);if(0<d.length)for(var b=
+0;c<a.length;c++){var f=a[c];if(d.isEdge(f)){var e=d.getTerminal(f,!0),g=d.getTerminal(f,!1);d.setTerminal(f,g,!0);d.setTerminal(f,e,!1);var l=d.getGeometry(f);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var n=l.getTerminalPoint(!0),p=l.getTerminalPoint(!1);l.setTerminalPoint(n,!1);l.setTerminalPoint(p,!0);d.setGeometry(f,l);var u=this.view.getState(f),x=this.view.getState(e),t=this.view.getState(g);if(null!=u){var J=null!=x?this.getConnectionConstraint(u,x,!0):null,k=null!=t?this.getConnectionConstraint(u,
+t,!1):null;this.setConnectionConstraint(f,e,!0,k);this.setConnectionConstraint(f,g,!1,J)}b.push(f)}}else if(d.isVertex(f)&&(l=this.getCellGeometry(f),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=l.height/2-l.width/2;var D=l.width;l.width=l.height;l.height=D;d.setGeometry(f,l);var B=this.view.getState(f);if(null!=B){var A=B.style[mxConstants.STYLE_DIRECTION]||"east";"east"==A?A="south":"south"==A?A="west":"west"==A?A="north":"north"==A&&(A="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
+A,[f])}b.push(f)}}}finally{d.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var d=this.model.getDescendants(a.cell);if(0<d.length)for(var b=
 0;b<d.length;b++){var c=this.view.getState(d[b]);null!=c&&null!=c.shape&&null!=c.shape.stencil&&this.stencilHasPlaceholders(c.shape.stencil)?this.removeStateForCell(d[b]):this.isReplacePlaceholders(d[b])&&this.view.invalidate(d[b],!1,!1)}}};Graph.prototype.replaceElement=function(a,d){for(var b=a.ownerDocument.createElement(null!=d?d:"span"),c=Array.prototype.slice.call(a.attributes);attr=c.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)};
 Graph.prototype.updateLabelElements=function(a,d,b){a=null!=a?a:this.getSelectionCells();for(var c=document.createElement("div"),f=0;f<a.length;f++)if(this.isHtmlLabel(a[f])){var e=this.convertValueToString(a[f]);if(null!=e&&0<e.length){c.innerHTML=e;for(var g=c.getElementsByTagName(null!=b?b:"*"),l=0;l<g.length;l++)d(g[l]);c.innerHTML!=e&&this.cellLabelChanged(a[f],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,d,b){d=this.zapGremlins(d);this.model.beginUpdate();try{if(null!=a.value&&
 "object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),f=a;null!=f;){if(f==this.model.getRoot()||null!=f.value&&"object"==typeof f.value&&f.hasAttribute(c)){this.setAttributeForCell(f,c,d);break}f=this.model.getParent(f)}var e=a.value.cloneNode(!0);e.setAttribute("label",d);d=e}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var d=
@@ -2371,12 +2374,12 @@ a.length-1;0<=e;e--)if(0==e||a[e]!=f[e-1]){a[e].setAttribute("width",d);a[e].set
 Graph.prototype.distributeCells=function(a,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var b=[],c=null,f=null,e=0;e<d.length;e++)if(this.getModel().isVertex(d[e])){var g=this.view.getState(d[e]);if(null!=g){var l=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,l):l,f=null!=f?Math.min(f,l):l;b.push(g)}}if(2<b.length){b.sort(function(d,b){return a?d.x-b.x:d.y-b.y});g=this.view.translate;l=this.view.scale;f=f/l-(a?g.x:g.y);c=c/l-(a?g.x:g.y);this.getModel().beginUpdate();
 try{for(var n=(c-f)/(b.length-1),c=f,e=1;e<b.length-1;e++){var p=this.view.getState(this.model.getParent(b[e].cell)),u=this.getCellGeometry(b[e].cell),c=c+n;null!=u&&null!=p&&(u=u.clone(),a?u.x=Math.round(c-u.width/2)-p.origin.x:u.y=Math.round(c-u.height/2)-p.origin.y,this.getModel().setGeometry(b[e].cell,u))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=
 function(a){for(var d=this.cloneCells(a),b=new mxDictionary,c=0;c<a.length;c++)b.put(a[c],!0);for(c=0;c<d.length;c++){var f=this.view.getState(a[c]);if(null!=f){var e=this.getCellGeometry(d[c]);null==e||!e.relative||this.model.isEdge(a[c])||b.get(this.model.getParent(a[c]))||(e.relative=!1,e.x=f.x/f.view.scale-f.view.translate.x,e.y=f.y/f.view.scale-f.view.translate.y)}}b=new mxCodec;f=new mxGraphModel;e=f.getChildAt(f.getRoot(),0);for(c=0;c<a.length;c++)f.add(e,d[c]);return b.encode(f)};Graph.prototype.createSvgImageExport=
-function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,d){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,d,b,c,f,e,g,l,n,u){var p=this.useCssTransforms;p&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{d=null!=d?d:1;b=null!=b?b:0;f=null!=f?f:!0;e=null!=e?e:!0;g=null!=g?g:!0;var y=e||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==y)throw Error(mxResources.get("drawingEmpty"));
-var t=this.view.scale,k=mxUtils.createXmlDocument(),A=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=A.style?A.style.backgroundColor=a:A.setAttribute("style","background-color:"+a));null==k.createElementNS?(A.setAttribute("xmlns",mxConstants.NS_SVG),A.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):A.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=d/t;var B=Math.max(1,Math.ceil(y.width*a)+2*b)+(u?5:
-0),r=Math.max(1,Math.ceil(y.height*a)+2*b)+(u?5:0);A.setAttribute("version","1.1");A.setAttribute("width",B+"px");A.setAttribute("height",r+"px");A.setAttribute("viewBox",(f?"-0.5 -0.5":"0 0")+" "+B+" "+r);k.appendChild(A);var D=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"g"):k.createElement("g");A.appendChild(D);var x=this.createSvgCanvas(D);x.foOffset=f?-.5:0;x.textOffset=f?-.5:0;x.imageOffset=f?-.5:0;x.translate(Math.floor((b/d-y.x)/t),Math.floor((b/d-y.y)/t));var m=document.createElement("textarea"),
-q=x.createAlternateContent;x.createAlternateContent=function(a,d,b,c,f,e,g,l,n,u,p,y,t){var k=this.state;if(null!=this.foAltText&&(0==c||0!=k.fontSize&&e.length<5*c/k.fontSize)){var A=this.createElement("text");A.setAttribute("x",Math.round(c/2));A.setAttribute("y",Math.round((f+k.fontSize)/2));A.setAttribute("fill",k.fontColor||"black");A.setAttribute("text-anchor","middle");A.setAttribute("font-size",Math.round(k.fontSize)+"px");A.setAttribute("font-family",k.fontFamily);(k.fontStyle&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD&&A.setAttribute("font-weight","bold");(k.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&A.setAttribute("font-style","italic");(k.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&A.setAttribute("text-decoration","underline");try{return m.innerHTML=e,A.textContent=m.value,A}catch(oa){return q.apply(this,arguments)}}else return q.apply(this,arguments)};var J=this.backgroundImage;if(null!=J){d=t/d;var C=this.view.translate,X=new mxRectangle(C.x*d,
-C.y*d,J.width*d,J.height*d);mxUtils.intersects(y,X)&&x.image(C.x,C.y,J.width,J.height,J.src,!0)}x.scale(a);x.textEnabled=g;l=null!=l?l:this.createSvgImageExport();var E=l.drawCellState;l.drawCellState=function(a,d){for(var b=a.view.graph,c=b.isCellSelected(a.cell),f=b.model.getParent(a.cell);!e&&!c&&null!=f;)c=b.isCellSelected(f),f=b.model.getParent(f);(e||c)&&E.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),x);this.updateSvgLinks(A,n,!0);return A}finally{p&&(this.useCssTransforms=
+function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,d){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,d,b,c,f,e,g,l,n,p){var u=this.useCssTransforms;u&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{d=null!=d?d:1;b=null!=b?b:0;f=null!=f?f:!0;e=null!=e?e:!0;g=null!=g?g:!0;var x=e||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==x)throw Error(mxResources.get("drawingEmpty"));
+var t=this.view.scale,k=mxUtils.createXmlDocument(),D=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=D.style?D.style.backgroundColor=a:D.setAttribute("style","background-color:"+a));null==k.createElementNS?(D.setAttribute("xmlns",mxConstants.NS_SVG),D.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):D.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=d/t;var A=Math.max(1,Math.ceil(x.width*a)+2*b)+(p?5:
+0),B=Math.max(1,Math.ceil(x.height*a)+2*b)+(p?5:0);D.setAttribute("version","1.1");D.setAttribute("width",A+"px");D.setAttribute("height",B+"px");D.setAttribute("viewBox",(f?"-0.5 -0.5":"0 0")+" "+A+" "+B);k.appendChild(D);var y=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"g"):k.createElement("g");D.appendChild(y);var r=this.createSvgCanvas(y);r.foOffset=f?-.5:0;r.textOffset=f?-.5:0;r.imageOffset=f?-.5:0;r.translate(Math.floor((b/d-x.x)/t),Math.floor((b/d-x.y)/t));var m=document.createElement("textarea"),
+q=r.createAlternateContent;r.createAlternateContent=function(a,d,b,c,f,e,g,l,n,p,u,x,t){var k=this.state;if(null!=this.foAltText&&(0==c||0!=k.fontSize&&e.length<5*c/k.fontSize)){var D=this.createElement("text");D.setAttribute("x",Math.round(c/2));D.setAttribute("y",Math.round((f+k.fontSize)/2));D.setAttribute("fill",k.fontColor||"black");D.setAttribute("text-anchor","middle");D.setAttribute("font-size",Math.round(k.fontSize)+"px");D.setAttribute("font-family",k.fontFamily);(k.fontStyle&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD&&D.setAttribute("font-weight","bold");(k.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&D.setAttribute("font-style","italic");(k.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&D.setAttribute("text-decoration","underline");try{return m.innerHTML=e,D.textContent=m.value,D}catch(oa){return q.apply(this,arguments)}}else return q.apply(this,arguments)};var J=this.backgroundImage;if(null!=J){d=t/d;var C=this.view.translate,X=new mxRectangle(C.x*d,
+C.y*d,J.width*d,J.height*d);mxUtils.intersects(x,X)&&r.image(C.x,C.y,J.width,J.height,J.src,!0)}r.scale(a);r.textEnabled=g;l=null!=l?l:this.createSvgImageExport();var F=l.drawCellState;l.drawCellState=function(a,d){for(var b=a.view.graph,c=b.isCellSelected(a.cell),f=b.model.getParent(a.cell);!e&&!c&&null!=f;)c=b.isCellSelected(f),f=b.model.getParent(f);(e||c)&&F.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),r);this.updateSvgLinks(D,n,!0);return D}finally{u&&(this.useCssTransforms=
 !0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,d,b){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++){var f=a[c].getAttribute("href");null==f&&(f=a[c].getAttribute("xlink:href"));null!=f&&(null!=d&&/^https?:\/\//.test(f)?a[c].setAttribute("target",d):b&&this.isCustomLink(f)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=
 null;if(window.getSelection){var d=window.getSelection();d.getRangeAt&&d.rangeCount&&(a=d.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,d,b){for(;null!=a&&a.nodeName!=d;){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){var b=document.createRange();b.selectNode(a);
 d.removeAllRanges();d.addRange(b)}}else(d=document.selection)&&"Control"!=d.type&&(a=d.createRange(),a.collapse(!0),b=d.createRange(),b.setEndPoint("StartToStart",a),b.select())};Graph.prototype.insertRow=function(a,d){for(var b=a.tBodies[0],c=b.rows[0].cells,f=0,e=0;e<c.length;e++)var g=c[e].getAttribute("colspan"),f=f+(null!=g?parseInt(g):1);b=b.insertRow(d);for(e=0;e<f;e++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=function(a,d){a.tBodies[0].deleteRow(d)};Graph.prototype.insertColumn=
@@ -2420,20 +2423,20 @@ HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.protot
 HoverIcons.prototype.triangleDown.src,(new Image).src=HoverIcons.prototype.triangleLeft.src,(new Image).src=HoverIcons.prototype.refreshTarget.src,(new Image).src=HoverIcons.prototype.roundDrop.src);mxVertexHandler.prototype.rotationEnabled=!0;mxVertexHandler.prototype.manageSizers=!0;mxVertexHandler.prototype.livePreview=!0;mxRubberband.prototype.defaultOpacity=30;mxConnectionHandler.prototype.outlineConnect=!0;mxCellHighlight.prototype.keepOnTop=!0;mxVertexHandler.prototype.parentHighlightEnabled=
 !0;mxVertexHandler.prototype.rotationHandleVSpacing=-20;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(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=
 function(a){return!mxEvent.isShiftDown(a.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=-24,mxConstraintHandler.prototype.getTolerance=function(a){return mxEvent.isMouseEvent(a.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=
-function(a){var d=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(d)||mxEvent.isPopupTrigger(d)&&(null==a.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))};var n=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,d){n.apply(this,arguments);mxEvent.isTouchEvent(d.getEvent())&&this.graph.isCellSelected(d.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var d=
+function(a){var d=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(d)||mxEvent.isPopupTrigger(d)&&(null==a.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))};var p=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,d){p.apply(this,arguments);mxEvent.isTouchEvent(d.getEvent())&&this.graph.isCellSelected(d.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var d=
 a.getEvent();return mxEvent.isLeftMouseButton(d)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(d)&&!mxEvent.isShiftDown(d))||this.usePopupTrigger&&mxEvent.isPopupTrigger(d)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,d){var b=null!=this.div&&"none"!=this.div.style.display,
 c=null,f=null,e=null,g=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(c=this.first.x,f=this.first.y,e=(this.currentX-c)/this.graph.view.scale,g=(this.currentY-f)/this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(e=this.graph.snap(e),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(e)<this.graph.tolerance&&(e=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(b){if(mxEvent.isAltDown(d.getEvent())&&this.graph.isToggleEvent(d.getEvent())){var e=new mxRectangle(this.x,
-this.y,this.width,this.height),l=this.graph.getCells(e.x,e.y,e.width,e.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(c,f,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var n=this.graph.view.getState(l[b]),u=this.graph.getCellGeometry(l[b]);null!=n&&null!=u&&(u=u.clone(),u.translate(e,g),this.graph.model.setGeometry(l[b],u))}}finally{this.graph.model.endUpdate()}}else e=
+this.y,this.width,this.height),l=this.graph.getCells(e.x,e.y,e.width,e.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(c,f,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var n=this.graph.view.getState(l[b]),p=this.graph.getCellGeometry(l[b]);null!=n&&null!=p&&(p=p.clone(),p.translate(e,g),this.graph.model.setGeometry(l[b],p))}}finally{this.graph.model.endUpdate()}}else e=
 new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(e,d.getEvent());d.consume()}};mxRubberband.prototype.mouseMove=function(a,d){if(!d.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);b.x-=c.x;b.y-=c.y;var c=d.getX()+b.x,b=d.getY()+b.y,f=this.first.x-c,e=this.first.y-b,g=this.graph.tolerance;if(null!=this.div||Math.abs(f)>g||Math.abs(e)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),
 this.update(c,b),this.isSpaceEvent(d)?(c=this.x+this.width,b=this.y+this.height,f=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/f)*f,this.height=this.graph.snap(this.height/f)*f,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=c-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",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+
 "px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),d.consume()}};var g=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null);g.apply(this,arguments)};var p=(new Date).getTime(),B=0,x=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,d,b,c){x.apply(this,arguments);b!=this.currentTerminalState?(p=(new Date).getTime(),B=0):B=(new Date).getTime()-p;this.currentTerminalState=b};var t=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
-2E3<B||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&t.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,d){var b=null!=a&&0==a,c=this.state.getVisibleTerminalState(b),f=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,
-c,b):null,b=null!=(null!=f?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),f):null)?this.fixedHandleImage:null!=f&&null!=c?this.terminalHandleImage: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 y=mxVertexHandler.prototype.createSizerShape;
-mxVertexHandler.prototype.createSizerShape=function(a,d,b){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return y.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var d=this.graph.getModel(),b=d.getParent(a[0]),c=this.graph.getCellGeometry(a[0]);if(d.isEdge(b)&&null!=c&&c.relative&&(d=this.graph.view.getState(a[0]),
-null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return u.apply(this,arguments)};var A=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var d=this.graph.getModel(),b=d.getParent(a.cell),c=this.graph.getCellGeometry(a.cell);return d.isEdge(b)&&null!=c&&c.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(d=a.text.unrotatedBoundingBox||a.text.boundingBox,
-new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):A.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,d){var b=this.graph.getModel(),c=b.getParent(this.state.cell),f=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!b.isEdge(c)||null==f||!f.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=
+this.secondDiv=null);g.apply(this,arguments)};var n=(new Date).getTime(),A=0,y=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,d,b,c){y.apply(this,arguments);b!=this.currentTerminalState?(n=(new Date).getTime(),A=0):A=(new Date).getTime()-n;this.currentTerminalState=b};var t=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
+2E3<A||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&t.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,d){var b=null!=a&&0==a,c=this.state.getVisibleTerminalState(b),f=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,
+c,b):null,b=null!=(null!=f?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),f):null)?this.fixedHandleImage:null!=f&&null!=c?this.terminalHandleImage: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 x=mxVertexHandler.prototype.createSizerShape;
+mxVertexHandler.prototype.createSizerShape=function(a,d,b){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return x.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var d=this.graph.getModel(),b=d.getParent(a[0]),c=this.graph.getCellGeometry(a[0]);if(d.isEdge(b)&&null!=c&&c.relative&&(d=this.graph.view.getState(a[0]),
+null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return u.apply(this,arguments)};var D=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var d=this.graph.getModel(),b=d.getParent(a.cell),c=this.graph.getCellGeometry(a.cell);return d.isEdge(b)&&null!=c&&c.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(d=a.text.unrotatedBoundingBox||a.text.boundingBox,
+new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):D.apply(this,arguments)};var B=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,d){var b=this.graph.getModel(),c=b.getParent(this.state.cell),f=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!b.isEdge(c)||null==f||!f.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&B.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=
 function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var U=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,d){U.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!=
 this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var S=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,d){S.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var N=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){N.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",
 mxResources.get("rotateTooltip"));var d=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,b){d()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,
@@ -2443,27 +2446,27 @@ this.linkHint.innerHTML="";if(null!=d&&(this.linkHint.appendChild(this.graph.cre
 function(a){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(a)}));c=document.createElement("img");c.setAttribute("src",Dialog.prototype.clearImage);c.setAttribute("title",mxResources.get("removeIt",[mxResources.get("link")]));c.setAttribute("width","13");c.setAttribute("height","10");c.style.marginLeft="4px";c.style.marginBottom="-1px";c.style.cursor="pointer";this.linkHint.appendChild(c);mxEvent.addListener(c,"click",mxUtils.bind(this,function(a){this.graph.setLinkForCell(this.state.cell,
 null);mxEvent.consume(a)}))}if(null!=b)for(c=0;c<b.length;c++){var f=document.createElement("div");f.style.marginTop=null!=d||0<c?"6px":"0px";f.appendChild(this.graph.createLinkForHint(b[c].getAttribute("href"),mxUtils.getTextContent(b[c])));this.linkHint.appendChild(f)}}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var K=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){K.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,
 function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=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.selectionHandler=mxUtils.bind(this,function(d,b){a()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionHandler);
-this.changeHandler=mxUtils.bind(this,function(d,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=d||null!=b&&0<b.length)this.updateLinkHint(d,b),this.redrawHandles()};var E=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){E.apply(this,
+this.changeHandler=mxUtils.bind(this,function(d,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=d||null!=b&&0<b.length)this.updateLinkHint(d,b),this.redrawHandles()};var F=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){F.apply(this,
 arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var C=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){C.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),b=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||
 "0",a),a=null!=b?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null;null==b&&(b=this.state);b=b.y+b.height;null!=d&&(b=Math.max(b,d.y+d.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var M=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset=
 function(){M.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var O=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){O.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=
 null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var V=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(V.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height),
 a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var T=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){T.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var W=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){W.apply(this,arguments);null!=this.linkHint&&
-(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function e(){mxCylinder.call(this)}function c(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function m(){mxActor.call(this)}function q(){mxCylinder.call(this)}function r(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function d(){mxActor.call(this)}function f(){mxActor.call(this)}function l(){mxActor.call(this)}function n(){mxActor.call(this)}function g(a,d){this.canvas=
+(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function e(){mxCylinder.call(this)}function c(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function m(){mxActor.call(this)}function q(){mxCylinder.call(this)}function r(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function d(){mxActor.call(this)}function f(){mxActor.call(this)}function l(){mxActor.call(this)}function p(){mxActor.call(this)}function g(a,d){this.canvas=
 a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,g.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,g.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,g.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,g.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
-this.canvas.curveTo=mxUtils.bind(this,g.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,g.prototype.arcTo)}function p(){mxRectangleShape.call(this)}function B(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function t(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function U(){mxShape.call(this)}function S(){mxShape.call(this)}
-function N(){mxEllipse.call(this)}function K(){mxShape.call(this)}function E(){mxShape.call(this)}function C(){mxRectangleShape.call(this)}function M(){mxShape.call(this)}function O(){mxShape.call(this)}function V(){mxShape.call(this)}function T(){mxShape.call(this)}function W(){mxShape.call(this)}function J(){mxCylinder.call(this)}function X(){mxDoubleEllipse.call(this)}function la(){mxDoubleEllipse.call(this)}function fa(){mxArrowConnector.call(this);this.spacing=0}function Y(){mxArrowConnector.call(this);
+this.canvas.curveTo=mxUtils.bind(this,g.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,g.prototype.arcTo)}function n(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function y(){mxActor.call(this)}function t(){mxActor.call(this)}function x(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function D(){mxRectangleShape.call(this)}function B(){mxCylinder.call(this)}function U(){mxShape.call(this)}function S(){mxShape.call(this)}
+function N(){mxEllipse.call(this)}function K(){mxShape.call(this)}function F(){mxShape.call(this)}function C(){mxRectangleShape.call(this)}function M(){mxShape.call(this)}function O(){mxShape.call(this)}function V(){mxShape.call(this)}function T(){mxShape.call(this)}function W(){mxShape.call(this)}function J(){mxCylinder.call(this)}function X(){mxDoubleEllipse.call(this)}function la(){mxDoubleEllipse.call(this)}function fa(){mxArrowConnector.call(this);this.spacing=0}function Y(){mxArrowConnector.call(this);
 this.spacing=0}function ca(){mxActor.call(this)}function H(){mxRectangleShape.call(this)}function I(){mxActor.call(this)}function aa(){mxActor.call(this)}function L(){mxActor.call(this)}function P(){mxActor.call(this)}function da(){mxActor.call(this)}function Z(){mxActor.call(this)}function G(){mxActor.call(this)}function ja(){mxActor.call(this)}function Q(){mxActor.call(this)}function ha(){mxActor.call(this)}function ka(){mxEllipse.call(this)}function ga(){mxEllipse.call(this)}function ba(){mxEllipse.call(this)}
-function wa(){mxRhombus.call(this)}function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function ta(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function ma(){mxActor.call(this)}function ra(){mxActor.call(this)}function ia(){mxActor.call(this)}function ea(){mxConnector.call(this)}function sa(a,d,b,c,f,e,g,l,n,u){g+=n;var F=c.clone();c.x-=f*(2*g+n);c.y-=e*(2*g+n);f*=g+n;e*=g+n;return function(){a.ellipse(F.x-f-g,F.y-e-g,2*g,2*g);u?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,
-mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),F=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,
-e);a.lineTo(c,f);a.lineTo(e,f);a.lineTo(0,f-e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=F&&(a.setFillAlpha(Math.abs(F)),a.setFillColor(0>F?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(c-e,0),a.lineTo(c,e),a.lineTo(e,e),a.close(),a.fill()),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e,e),a.lineTo(e,f),a.lineTo(0,f-e),a.close(),a.fill()),a.begin(),a.moveTo(e,f),a.lineTo(e,e),a.lineTo(0,
+function wa(){mxRhombus.call(this)}function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function ta(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function ma(){mxActor.call(this)}function ra(){mxActor.call(this)}function ia(){mxActor.call(this)}function ea(){mxConnector.call(this)}function sa(a,d,b,c,f,e,g,l,n,p){g+=n;var E=c.clone();c.x-=f*(2*g+n);c.y-=e*(2*g+n);f*=g+n;e*=g+n;return function(){a.ellipse(E.x-f-g,E.y-e-g,2*g,2*g);p?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,
+mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),E=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,
+e);a.lineTo(c,f);a.lineTo(e,f);a.lineTo(0,f-e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=E&&(a.setFillAlpha(Math.abs(E)),a.setFillColor(0>E?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(c-e,0),a.lineTo(c,e),a.lineTo(e,e),a.close(),a.fill()),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e,e),a.lineTo(e,f),a.lineTo(0,f-e),a.close(),a.fill()),a.begin(),a.moveTo(e,f),a.lineTo(e,e),a.lineTo(0,
 0),a.moveTo(e,e),a.lineTo(c,e),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var xa=Math.tan(mxUtils.toRadians(30)),na=(.5-xa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/xa);a.translate((c-d)/2,(f-d)/2+d/4);a.moveTo(0,.25*d);a.lineTo(.5*
 d,d*na);a.lineTo(d,.25*d);a.lineTo(.5*d,(.5-na)*d);a.lineTo(0,.25*d);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.min(c,f/(.5+xa));e?(a.moveTo(0,.25*d),a.lineTo(.5*d,(.5-na)*d),a.lineTo(d,.25*d),a.moveTo(.5*d,(.5-na)*d),a.lineTo(.5*d,(1-na)*d)):(a.translate((c-d)/2,(f-d)/2),a.moveTo(0,.25*d),a.lineTo(.5*d,d*na),a.lineTo(d,.25*d),a.lineTo(d,.75*d),a.lineTo(.5*d,(1-na)*d),a.lineTo(0,
 .75*d),a.close());a.end()};mxCellRenderer.registerShape("isoCube",e);mxUtils.extend(c,mxCylinder);c.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.min(f/2,Math.round(f/8)+this.strokewidth-1);if(e&&null!=this.fill||!e&&null==this.fill)a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,d/2),a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,d/2),a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,-d);e||(a.moveTo(0,
 d),a.curveTo(0,-d/3,c,-d/3,c,d),a.lineTo(c,f-d),a.curveTo(c,f+d/3,0,f+d/3,0,f-d),a.close())};c.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",c);mxUtils.extend(k,mxCylinder);k.prototype.size=30;k.prototype.darkOpacity=0;k.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),
-F=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,e);a.lineTo(c,f);a.lineTo(0,f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=F&&(a.setFillAlpha(Math.abs(F)),a.setFillColor(0>F?"#FFFFFF":"#000000"),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.close(),a.fill()),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.end(),a.stroke())};
+E=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,e);a.lineTo(c,f);a.lineTo(0,f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=E&&(a.setFillAlpha(Math.abs(E)),a.setFillColor(0>E?"#FFFFFF":"#000000"),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.close(),a.fill()),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.end(),a.stroke())};
 mxCellRenderer.registerShape("note",k);mxUtils.extend(m,mxActor);m.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.quadTo(c/2,.5*f,c,0);a.quadTo(.5*c,f/2,c,f);a.quadTo(c/2,.5*f,0,f);a.quadTo(.5*c,f/2,0,0);a.end()};mxCellRenderer.registerShape("switch",m);mxUtils.extend(q,mxCylinder);q.prototype.tabWidth=60;q.prototype.tabHeight=20;q.prototype.tabPosition="right";q.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));
-b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var F=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);e?"left"==F?(a.moveTo(0,b),a.lineTo(d,b)):(a.moveTo(c-d,b),a.lineTo(c,b)):("left"==F?(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,b),a.lineTo(c,b)):(a.moveTo(0,b),a.lineTo(c-d,b),a.lineTo(c-d,0),a.lineTo(c,0)),a.lineTo(c,f),a.lineTo(0,f),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",q);mxUtils.extend(r,mxActor);r.prototype.size=
+b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var E=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);e?"left"==E?(a.moveTo(0,b),a.lineTo(d,b)):(a.moveTo(c-d,b),a.lineTo(c,b)):("left"==E?(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,b),a.lineTo(c,b)):(a.moveTo(0,b),a.lineTo(c-d,b),a.lineTo(c-d,0),a.lineTo(c,0)),a.lineTo(c,f),a.lineTo(0,f),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",q);mxUtils.extend(r,mxActor);r.prototype.size=
 30;r.prototype.isRoundable=function(){return!0};r.prototype.redrawPath=function(a,d,b,c,f){d=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,f),new mxPoint(0,f),new mxPoint(0,d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",r);mxUtils.extend(v,mxActor);v.prototype.size=.4;v.prototype.redrawPath=
 function(a,d,b,c,f){d=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,d/2);a.quadTo(c/4,1.4*d,c/2,d/2);a.quadTo(3*c/4,d*(1-1.4),c,d/2);a.lineTo(c,f-d/2);a.quadTo(3*c/4,f-1.4*d,c/2,f-d/2);a.quadTo(c/4,f-d*(1-1.4),0,f-d/2);a.lineTo(0,d/2);a.close();a.end()};v.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",this.size),b=a.width,c=a.height;if(null==this.direction||this.direction==
 mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return d*=c,new mxRectangle(a.x,a.y+d,b,c-2*d);d*=b;return new mxRectangle(a.x+d,a.y,b-2*d,c)}return a};mxCellRenderer.registerShape("tape",v);mxUtils.extend(z,mxActor);z.prototype.size=.3;z.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};z.prototype.redrawPath=function(a,d,b,c,f){d=f*Math.max(0,
@@ -2471,46 +2474,46 @@ Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(
 function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*d),0,0)}return null};mxUtils.extend(d,mxActor);d.prototype.size=.2;d.prototype.isRoundable=function(){return!0};d.prototype.redrawPath=function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
 2;this.addPoints(a,[new mxPoint(0,f),new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c-d,f)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("parallelogram",d);mxUtils.extend(f,mxActor);f.prototype.size=.2;f.prototype.isRoundable=function(){return!0};f.prototype.redrawPath=function(a,d,b,c,f){d=c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,
 f),new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",f);mxUtils.extend(l,mxActor);l.prototype.size=.5;l.prototype.redrawPath=function(a,d,b,c,f){a.setFillColor(null);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,f/2),new mxPoint(0,f/2),new mxPoint(d,
-f/2),new mxPoint(d,f),new mxPoint(c,f)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",l);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(a,d,b,c,f){a.setStrokeWidth(1);a.setFillColor(this.stroke);d=c/5;a.rect(0,0,d,f);a.fillAndStroke();a.rect(2*d,0,d,f);a.fillAndStroke();a.rect(4*d,0,d,f);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",n);g.prototype.moveTo=function(a,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
+f/2),new mxPoint(d,f),new mxPoint(c,f)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",l);mxUtils.extend(p,mxActor);p.prototype.redrawPath=function(a,d,b,c,f){a.setStrokeWidth(1);a.setFillColor(this.stroke);d=c/5;a.rect(0,0,d,f);a.fillAndStroke();a.rect(2*d,0,d,f);a.fillAndStroke();a.rect(4*d,0,d,f);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",p);g.prototype.moveTo=function(a,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
 d;this.firstX=a;this.firstY=d};g.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)};g.prototype.quadTo=function(a,d,b,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=c};g.prototype.curveTo=function(a,d,b,c,f,e){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=e};g.prototype.arcTo=function(a,d,b,c,
-f,e,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};g.prototype.lineTo=function(a,d){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-this.lastX),f=Math.abs(d-this.lastY),e=Math.sqrt(c*c+f*f);if(2>e){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d;return}var g=Math.round(e/10),F=this.defaultVariation;5>g&&(g=5,F/=3);for(var l=b(a-this.lastX)*c/g,b=b(d-this.lastY)*f/g,
-c=c/e,f=f/e,e=0;e<g;e++){var n=(Math.random()-.5)*F;this.originalLineTo.call(this.canvas,l*e+this.lastX-n*f,b*e+this.lastY-n*c)}this.originalLineTo.call(this.canvas,a,d)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d};g.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};
+f,e,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};g.prototype.lineTo=function(a,d){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-this.lastX),f=Math.abs(d-this.lastY),e=Math.sqrt(c*c+f*f);if(2>e){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d;return}var g=Math.round(e/10),E=this.defaultVariation;5>g&&(g=5,E/=3);for(var l=b(a-this.lastX)*c/g,b=b(d-this.lastY)*f/g,
+c=c/e,f=f/e,e=0;e<g;e++){var n=(Math.random()-.5)*E;this.originalLineTo.call(this.canvas,l*e+this.lastX-n*f,b*e+this.lastY-n*c)}this.originalLineTo.call(this.canvas,a,d)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d};g.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};
 var Ja=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new g(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ja.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Ka=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==
 this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ka.apply(this,arguments)};var La=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,d,b,c,f){if(null==a.handJiggle)La.apply(this,arguments);else{var e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(e||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)e||null!=this.fill&&this.fill!=mxConstants.NONE||
 (a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?e=Math.min(c/2,Math.min(f/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.min(c*e,f*e)),a.moveTo(d+e,b),a.lineTo(d+c-e,b),a.quadTo(d+c,b,d+c,b+e),a.lineTo(d+c,b+f-e),a.quadTo(d+c,b+f,d+c-e,b+f),a.lineTo(d+e,b+f),a.quadTo(d,b+f,d,b+f-e),
-a.lineTo(d,b+e),a.quadTo(d,b,d+e,b)):(a.moveTo(d,b),a.lineTo(d+c,b),a.lineTo(d+c,b+f),a.lineTo(d,b+f),a.lineTo(d,b)),a.close(),a.end(),a.fillAndStroke()}};var Ma=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,d,b,c,f){null==a.handJiggle&&Ma.apply(this,arguments)};mxUtils.extend(p,mxRectangleShape);p.prototype.size=.1;p.prototype.isHtmlAllowed=function(){return!1};p.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,
-!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=a.width,b=a.height;a=new mxRectangle(a.x,a.y,d,b);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*f,b*f));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};p.prototype.paintForeground=
-function(a,d,b,c,f){var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*g,f*g));e=Math.round(e);a.begin();a.moveTo(d+e,b);a.lineTo(d+e,b+f);a.moveTo(d+c-e,b);a.lineTo(d+c-e,b+f);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",p);mxUtils.extend(B,
-mxRectangleShape);B.prototype.paintBackground=function(a,d,b,c,f){a.setFillColor(mxConstants.NONE);a.rect(d,b,c,f);a.fill()};B.prototype.paintForeground=function(a,d,b,c,f){};mxCellRenderer.registerShape("transparent",B);mxUtils.extend(x,mxHexagon);x.prototype.size=30;x.prototype.position=.5;x.prototype.position2=.5;x.prototype.base=20;x.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};x.prototype.isRoundable=
-function(){return!0};x.prototype.redrawPath=function(a,d,b,c,f){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));
-this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f-b),new mxPoint(Math.min(c,e+l),f-b),new mxPoint(g,f),new mxPoint(Math.max(0,e),f-b),new mxPoint(0,f-b)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",x);mxUtils.extend(t,mxActor);t.prototype.size=.2;t.prototype.fixedSize=20;t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=function(a,d,b,c,f){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,
-"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(0,f),new mxPoint(d,f/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",t);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath=
-function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.5*f),new mxPoint(c-d,f),new mxPoint(d,f),new mxPoint(0,.5*f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a,
+a.lineTo(d,b+e),a.quadTo(d,b,d+e,b)):(a.moveTo(d,b),a.lineTo(d+c,b),a.lineTo(d+c,b+f),a.lineTo(d,b+f),a.lineTo(d,b)),a.close(),a.end(),a.fillAndStroke()}};var Ma=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,d,b,c,f){null==a.handJiggle&&Ma.apply(this,arguments)};mxUtils.extend(n,mxRectangleShape);n.prototype.size=.1;n.prototype.isHtmlAllowed=function(){return!1};n.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,
+!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=a.width,b=a.height;a=new mxRectangle(a.x,a.y,d,b);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*f,b*f));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};n.prototype.paintForeground=
+function(a,d,b,c,f){var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*g,f*g));e=Math.round(e);a.begin();a.moveTo(d+e,b);a.lineTo(d+e,b+f);a.moveTo(d+c-e,b);a.lineTo(d+c-e,b+f);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",n);mxUtils.extend(A,
+mxRectangleShape);A.prototype.paintBackground=function(a,d,b,c,f){a.setFillColor(mxConstants.NONE);a.rect(d,b,c,f);a.fill()};A.prototype.paintForeground=function(a,d,b,c,f){};mxCellRenderer.registerShape("transparent",A);mxUtils.extend(y,mxHexagon);y.prototype.size=30;y.prototype.position=.5;y.prototype.position2=.5;y.prototype.base=20;y.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};y.prototype.isRoundable=
+function(){return!0};y.prototype.redrawPath=function(a,d,b,c,f){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));
+this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f-b),new mxPoint(Math.min(c,e+l),f-b),new mxPoint(g,f),new mxPoint(Math.max(0,e),f-b),new mxPoint(0,f-b)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",y);mxUtils.extend(t,mxActor);t.prototype.size=.2;t.prototype.fixedSize=20;t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=function(a,d,b,c,f){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,
+"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(0,f),new mxPoint(d,f/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",t);mxUtils.extend(x,mxHexagon);x.prototype.size=.25;x.prototype.isRoundable=function(){return!0};x.prototype.redrawPath=
+function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.5*f),new mxPoint(c-d,f),new mxPoint(d,f),new mxPoint(0,.5*f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",x);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a,
 d,b,c,f){var e=Math.min(c/5,f/5)+1;a.begin();a.moveTo(d+c/2,b+e);a.lineTo(d+c/2,b+f-e);a.moveTo(d+e,b+f/2);a.lineTo(d+c-e,b+f/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",u);var Fa=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
-d,a.y+d,a.width-2*d,a.height-2*d)}return a};mxRhombus.prototype.paintVertexShape=function(a,d,b,c,f){Fa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var e=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&(a.setShadow(!1),Fa.apply(this,[a,d,b,c,f]))}};mxUtils.extend(A,mxRectangleShape);A.prototype.isHtmlAllowed=function(){return!1};A.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(Math.max(2,
-this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+d,a.y+d,a.width-2*d,a.height-2*d)}return a};A.prototype.paintForeground=function(a,d,b,c,f){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var e=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var e=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+
-e]];if(null!=g){var l=this.style["symbol"+e+"Align"],F=this.style["symbol"+e+"VerticalAlign"],n=this.style["symbol"+e+"Width"],u=this.style["symbol"+e+"Height"],p=this.style["symbol"+e+"Spacing"]||0,y=this.style["symbol"+e+"VSpacing"]||p,t=this.style["symbol"+e+"ArcSpacing"];null!=t&&(t*=this.getArcSize(c+this.strokewidth,f+this.strokewidth),p+=t,y+=t);var t=d,k=b,t=l==mxConstants.ALIGN_CENTER?t+(c-n)/2:l==mxConstants.ALIGN_RIGHT?t+(c-n-p):t+p,k=F==mxConstants.ALIGN_MIDDLE?k+(f-u)/2:F==mxConstants.ALIGN_BOTTOM?
-k+(f-u-y):k+y;a.save();l=new g;l.style=this.style;g.prototype.paintVertexShape.call(l,a,t,k,n,u);a.restore()}e++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",A);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,d,b,c,f,e){e?(a.moveTo(0,0),a.lineTo(c/2,f/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(0,f),a.close())};mxCellRenderer.registerShape("message",D);mxUtils.extend(U,mxShape);
+d,a.y+d,a.width-2*d,a.height-2*d)}return a};mxRhombus.prototype.paintVertexShape=function(a,d,b,c,f){Fa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var e=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&(a.setShadow(!1),Fa.apply(this,[a,d,b,c,f]))}};mxUtils.extend(D,mxRectangleShape);D.prototype.isHtmlAllowed=function(){return!1};D.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(Math.max(2,
+this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+d,a.y+d,a.width-2*d,a.height-2*d)}return a};D.prototype.paintForeground=function(a,d,b,c,f){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var e=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var e=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+
+e]];if(null!=g){var l=this.style["symbol"+e+"Align"],E=this.style["symbol"+e+"VerticalAlign"],n=this.style["symbol"+e+"Width"],p=this.style["symbol"+e+"Height"],u=this.style["symbol"+e+"Spacing"]||0,x=this.style["symbol"+e+"VSpacing"]||u,t=this.style["symbol"+e+"ArcSpacing"];null!=t&&(t*=this.getArcSize(c+this.strokewidth,f+this.strokewidth),u+=t,x+=t);var t=d,k=b,t=l==mxConstants.ALIGN_CENTER?t+(c-n)/2:l==mxConstants.ALIGN_RIGHT?t+(c-n-u):t+u,k=E==mxConstants.ALIGN_MIDDLE?k+(f-p)/2:E==mxConstants.ALIGN_BOTTOM?
+k+(f-p-x):k+x;a.save();l=new g;l.style=this.style;g.prototype.paintVertexShape.call(l,a,t,k,n,p);a.restore()}e++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",D);mxUtils.extend(B,mxCylinder);B.prototype.redrawPath=function(a,d,b,c,f,e){e?(a.moveTo(0,0),a.lineTo(c/2,f/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(0,f),a.close())};mxCellRenderer.registerShape("message",B);mxUtils.extend(U,mxShape);
 U.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.ellipse(c/4,0,c/2,f/4);a.fillAndStroke();a.begin();a.moveTo(c/2,f/4);a.lineTo(c/2,2*f/3);a.moveTo(c/2,f/3);a.lineTo(0,f/3);a.moveTo(c/2,f/3);a.lineTo(c,f/3);a.moveTo(c/2,2*f/3);a.lineTo(0,f);a.moveTo(c/2,2*f/3);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",U);mxUtils.extend(S,mxShape);S.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};S.prototype.paintBackground=function(a,
 d,b,c,f){a.translate(d,b);a.begin();a.moveTo(0,f/4);a.lineTo(0,3*f/4);a.end();a.stroke();a.begin();a.moveTo(0,f/2);a.lineTo(c/6,f/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,f);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",S);mxUtils.extend(N,mxEllipse);N.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(d+c/8,b+f);a.lineTo(d+7*c/8,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",N);mxUtils.extend(K,
-mxShape);K.prototype.paintVertexShape=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(c,0);a.lineTo(0,f);a.moveTo(0,0);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(E,mxShape);E.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};E.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,f/8,c,7*f/8);a.fillAndStroke()};
-E.prototype.paintForeground=function(a,d,b,c,f){a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,f/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",E);mxUtils.extend(C,mxRectangleShape);C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,d)};C.prototype.paintBackground=function(a,d,b,c,
+mxShape);K.prototype.paintVertexShape=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(c,0);a.lineTo(0,f);a.moveTo(0,0);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(F,mxShape);F.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};F.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,f/8,c,7*f/8);a.fillAndStroke()};
+F.prototype.paintForeground=function(a,d,b,c,f){a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,f/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",F);mxUtils.extend(C,mxRectangleShape);C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,d)};C.prototype.paintBackground=function(a,d,b,c,
 f){var e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,d,b,c,e):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=C&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,d,b,c,e),a.restore()));e<f&&(a.setDashed(!0),a.begin(),a.moveTo(d+c/2,b+e),a.lineTo(d+c/2,b+f),a.end(),a.stroke())};C.prototype.paintForeground=function(a,
 d,b,c,f){var e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,d,b,c,Math.min(f,e))};mxCellRenderer.registerShape("umlLifeline",C);mxUtils.extend(M,mxShape);M.prototype.width=60;M.prototype.height=30;M.prototype.corner=10;M.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,
-"height",this.height)*this.scale))};M.prototype.paintBackground=function(a,d,b,c,f){var e=this.corner,g=Math.min(c,Math.max(e,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(f,Math.max(1.5*e,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),F=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);F!=mxConstants.NONE&&(a.setFillColor(F),a.rect(d,b,c,f),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
+"height",this.height)*this.scale))};M.prototype.paintBackground=function(a,d,b,c,f){var e=this.corner,g=Math.min(c,Math.max(e,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(f,Math.max(1.5*e,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),E=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);E!=mxConstants.NONE&&(a.setFillColor(E),a.rect(d,b,c,f),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
 mxConstants.NONE?(this.getGradientBounds(a,d,b,c,f),a.setGradient(this.fill,this.gradient,d,b,c,f,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(d,b);a.lineTo(d+g,b);a.lineTo(d+g,b+Math.max(0,l-1.5*e));a.lineTo(d+Math.max(0,g-e),b+l);a.lineTo(d,b+l);a.close();a.fillAndStroke();a.begin();a.moveTo(d+g,b);a.lineTo(d+c,b);a.lineTo(d+c,b+f);a.lineTo(d,b+f);a.lineTo(d,b+l);a.stroke()};mxCellRenderer.registerShape("umlFrame",M);mxPerimeter.LifelinePerimeter=function(a,d,b,c){c=C.prototype.size;
 null!=d&&(c=mxUtils.getValue(d.style,"size",c)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;b.x<a.getCenterX()&&(d=-1*(d+1));return new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y+c,b.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,d,b,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);
 mxPerimeter.BackbonePerimeter=function(a,d,b,c){c=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(c+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return b.x<a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,b.y)));b.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,b.x)),
-a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,d,b,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(d.style,"size",x.prototype.size))*d.view.scale))),d.style),d,b,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,f){var e=d.prototype.size;
-null!=b&&(e=mxUtils.getValue(b.style,"size",e));var g=a.x,l=a.y,F=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l+e),new mxPoint(g+F,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l)]):(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+F,l),new mxPoint(g+F-e,l+n),new mxPoint(g,
-l+n),new mxPoint(g+e,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);f&&(c.x<g||c.x>g+F?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(l,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,d,b,c){var e=f.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,"size",e));var g=a.x,l=a.y,F=a.width,n=a.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
-d==mxConstants.DIRECTION_EAST?(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+F-e,l),new mxPoint(g+F,l+n),new mxPoint(g,l+n),new mxPoint(g+e,l)]):d==mxConstants.DIRECTION_WEST?(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l),new mxPoint(g+F-e,l+n),new mxPoint(g+e,l+n),new mxPoint(g,l)]):d==mxConstants.DIRECTION_NORTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+e),new mxPoint(g+F,l),new mxPoint(g+F,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l+e)]):(e=n*Math.max(0,
-Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l+e),new mxPoint(g+F,l+n-e),new mxPoint(g,l+n),new mxPoint(g,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);c&&(b.x<g||b.x>g+F?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,d,b,c){var f="0"!=mxUtils.getValue(d.style,"fixedSize","0"),e=f?t.prototype.fixedSize:t.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,
-"size",e));var g=a.x,l=a.y,F=a.width,n=a.height,u=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(f=f?Math.max(0,Math.min(F,e)):F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F-f,l),new mxPoint(g+F,a),new mxPoint(g+F-f,l+n),new mxPoint(g,l+n),new mxPoint(g+f,a),new mxPoint(g,l)]):d==mxConstants.DIRECTION_WEST?(f=f?Math.max(0,Math.min(F,e)):F*Math.max(0,
-Math.min(1,e)),l=[new mxPoint(g+f,l),new mxPoint(g+F,l),new mxPoint(g+F-f,a),new mxPoint(g+F,l+n),new mxPoint(g+f,l+n),new mxPoint(g,a),new mxPoint(g+f,l)]):d==mxConstants.DIRECTION_NORTH?(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+f),new mxPoint(u,l),new mxPoint(g+F,l+f),new mxPoint(g+F,l+n),new mxPoint(u,l+n-f),new mxPoint(g,l+n),new mxPoint(g,l+f)]):(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(u,l+f),new mxPoint(g+
-F,l),new mxPoint(g+F,l+n-f),new mxPoint(u,l+n),new mxPoint(g,l+n-f),new mxPoint(g,l)]);u=new mxPoint(u,a);c&&(b.x<g||b.x>g+F?u.y=b.y:u.x=b.x);return mxUtils.getPerimeterPoint(l,u,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,d,b,c){var f=y.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));var e=a.x,g=a.y,l=a.width,F=a.height,n=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(f=F*Math.max(0,Math.min(1,f)),g=[new mxPoint(n,g),new mxPoint(e+l,g+f),new mxPoint(e+l,g+F-f),new mxPoint(n,g+F),new mxPoint(e,g+F-f),new mxPoint(e,g+f),new mxPoint(n,g)]):(f=l*Math.max(0,Math.min(1,f)),g=[new mxPoint(e+f,g),new mxPoint(e+l-f,g),new mxPoint(e+l,a),new mxPoint(e+l-f,g+F),new mxPoint(e+f,g+F),new mxPoint(e,a),new mxPoint(e+f,g)]);n=new mxPoint(n,a);c&&(b.x<e||b.x>e+
-l?n.y=b.y:n.x=b.x);return mxUtils.getPerimeterPoint(g,n,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(d,b);a.ellipse((c-e)/2,0,e,e);a.fillAndStroke();a.begin();a.moveTo(c/2,e);a.lineTo(c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(V,mxShape);V.prototype.size=
+a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,d,b,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(d.style,"size",y.prototype.size))*d.view.scale))),d.style),d,b,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,f){var e=d.prototype.size;
+null!=b&&(e=mxUtils.getValue(b.style,"size",e));var g=a.x,l=a.y,E=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+E,l+e),new mxPoint(g+E,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l)]):(e=E*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+E,l),new mxPoint(g+E-e,l+n),new mxPoint(g,
+l+n),new mxPoint(g+e,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);f&&(c.x<g||c.x>g+E?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(l,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,d,b,c){var e=f.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,"size",e));var g=a.x,l=a.y,E=a.width,n=a.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
+d==mxConstants.DIRECTION_EAST?(e=E*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+E-e,l),new mxPoint(g+E,l+n),new mxPoint(g,l+n),new mxPoint(g+e,l)]):d==mxConstants.DIRECTION_WEST?(e=E*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+E,l),new mxPoint(g+E-e,l+n),new mxPoint(g+e,l+n),new mxPoint(g,l)]):d==mxConstants.DIRECTION_NORTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+e),new mxPoint(g+E,l),new mxPoint(g+E,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l+e)]):(e=n*Math.max(0,
+Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+E,l+e),new mxPoint(g+E,l+n-e),new mxPoint(g,l+n),new mxPoint(g,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);c&&(b.x<g||b.x>g+E?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,d,b,c){var f="0"!=mxUtils.getValue(d.style,"fixedSize","0"),e=f?t.prototype.fixedSize:t.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,
+"size",e));var g=a.x,l=a.y,E=a.width,n=a.height,p=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(f=f?Math.max(0,Math.min(E,e)):E*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+E-f,l),new mxPoint(g+E,a),new mxPoint(g+E-f,l+n),new mxPoint(g,l+n),new mxPoint(g+f,a),new mxPoint(g,l)]):d==mxConstants.DIRECTION_WEST?(f=f?Math.max(0,Math.min(E,e)):E*Math.max(0,
+Math.min(1,e)),l=[new mxPoint(g+f,l),new mxPoint(g+E,l),new mxPoint(g+E-f,a),new mxPoint(g+E,l+n),new mxPoint(g+f,l+n),new mxPoint(g,a),new mxPoint(g+f,l)]):d==mxConstants.DIRECTION_NORTH?(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+f),new mxPoint(p,l),new mxPoint(g+E,l+f),new mxPoint(g+E,l+n),new mxPoint(p,l+n-f),new mxPoint(g,l+n),new mxPoint(g,l+f)]):(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(p,l+f),new mxPoint(g+
+E,l),new mxPoint(g+E,l+n-f),new mxPoint(p,l+n),new mxPoint(g,l+n-f),new mxPoint(g,l)]);p=new mxPoint(p,a);c&&(b.x<g||b.x>g+E?p.y=b.y:p.x=b.x);return mxUtils.getPerimeterPoint(l,p,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,d,b,c){var f=x.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));var e=a.x,g=a.y,l=a.width,n=a.height,E=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,
+mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(f=n*Math.max(0,Math.min(1,f)),g=[new mxPoint(E,g),new mxPoint(e+l,g+f),new mxPoint(e+l,g+n-f),new mxPoint(E,g+n),new mxPoint(e,g+n-f),new mxPoint(e,g+f),new mxPoint(E,g)]):(f=l*Math.max(0,Math.min(1,f)),g=[new mxPoint(e+f,g),new mxPoint(e+l-f,g),new mxPoint(e+l,a),new mxPoint(e+l-f,g+n),new mxPoint(e+f,g+n),new mxPoint(e,a),new mxPoint(e+f,g)]);E=new mxPoint(E,a);c&&(b.x<e||b.x>e+
+l?E.y=b.y:E.x=b.x);return mxUtils.getPerimeterPoint(g,E,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(d,b);a.ellipse((c-e)/2,0,e,e);a.fillAndStroke();a.begin();a.moveTo(c/2,e);a.lineTo(c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(V,mxShape);V.prototype.size=
 10;V.prototype.inset=2;V.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(d,b);a.begin();a.moveTo(c/2,e+g);a.lineTo(c/2,f);a.end();a.stroke();a.begin();a.moveTo((c-e)/2-g,e/2);a.quadTo((c-e)/2-g,e+g,c/2,e+g);a.quadTo((c+e)/2+g,e+g,(c+e)/2+g,e/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",V);mxUtils.extend(T,mxShape);T.prototype.paintBackground=
 function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,0,f);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",T);mxUtils.extend(W,mxShape);W.prototype.inset=2;W.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(d,b);a.ellipse(0,e,c-2*e,f-2*e);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",
 W);mxUtils.extend(J,mxCylinder);J.prototype.jettyWidth=32;J.prototype.jettyHeight=12;J.prototype.redrawPath=function(a,d,b,c,f,e){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=g/2;var g=b+g/2,l=.3*f-d/2,n=.7*f-d/2;e?(a.moveTo(b,l),a.lineTo(g,l),a.lineTo(g,l+d),a.lineTo(b,l+d),a.moveTo(b,n),a.lineTo(g,n),a.lineTo(g,n+d),a.lineTo(b,n+d)):(a.moveTo(b,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(b,f),
@@ -2537,12 +2540,12 @@ f):a.moveTo(d,b+f),"1"==mxUtils.getValue(this.style,"left","1")&&a.lineTo(d,b-th
 va);mxUtils.extend(ma,mxActor);ma.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/2);a.moveTo(0,0);a.lineTo(c-d,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c-d,f);a.lineTo(0,f);a.close();a.end()};mxCellRenderer.registerShape("delay",ma);mxUtils.extend(ra,mxActor);ra.prototype.size=.2;ra.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(f,c);var e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=(f-e)/2;b=d+e;var g=(c-e)/2,e=g+e;a.moveTo(0,d);a.lineTo(g,d);a.lineTo(g,
 0);a.lineTo(e,0);a.lineTo(e,d);a.lineTo(c,d);a.lineTo(c,b);a.lineTo(e,b);a.lineTo(e,f);a.lineTo(g,f);a.lineTo(g,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross",ra);mxUtils.extend(ia,mxActor);ia.prototype.size=.25;ia.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/2);b=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,f/2);a.lineTo(b,0);a.lineTo(c-d,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c-d,f);a.lineTo(b,f);a.close();a.end()};
 mxCellRenderer.registerShape("display",ia);mxUtils.extend(ea,mxConnector);ea.prototype.origPaintEdgeShape=ea.prototype.paintEdgeShape;ea.prototype.paintEdgeShape=function(a,d,b){for(var c=[],f=0;f<d.length;f++)c.push(mxUtils.clone(d[f]));var f=a.state.dashed,e=a.state.fixDash;ea.prototype.origPaintEdgeShape.apply(this,[a,c,b]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(f,e),ea.prototype.origPaintEdgeShape.apply(this,
-[a,d,b])))};mxCellRenderer.registerShape("filledEdge",ea);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==d.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,d,b,c,f,e,g,l,n,u){var p=f*(g+n+1),y=e*(g+n+1);return function(){a.begin();
-a.moveTo(c.x-p/2-y/2,c.y-y/2+p/2);a.lineTo(c.x+y/2-3*p/2,c.y-3*y/2-p/2);a.stroke()}});mxMarker.addMarker("cross",function(a,d,b,c,f,e,g,l,n,u){var p=f*(g+n+1),y=e*(g+n+1);return function(){a.begin();a.moveTo(c.x-p/2-y/2,c.y-y/2+p/2);a.lineTo(c.x+y/2-3*p/2,c.y-3*y/2-p/2);a.moveTo(c.x-p/2+y/2,c.y-y/2-p/2);a.lineTo(c.x-y/2-3*p/2,c.y-3*y/2+p/2);a.stroke()}});mxMarker.addMarker("circle",sa);mxMarker.addMarker("circlePlus",function(a,d,b,c,f,e,g,l,n,u){var p=c.clone(),y=sa.apply(this,arguments),t=f*(g+
-2*n),k=e*(g+2*n);return function(){y.apply(this,arguments);a.begin();a.moveTo(p.x-f*n,p.y-e*n);a.lineTo(p.x-2*t+f*n,p.y-2*k+e*n);a.moveTo(p.x-t-k+e*n,p.y-k+t-f*n);a.lineTo(p.x+k-t-e*n,p.y-k-t+f*n);a.stroke()}});mxMarker.addMarker("async",function(a,d,b,c,f,e,g,l,n,p){d=f*n*1.118;b=e*n*1.118;f*=g+n;e*=g+n;var u=c.clone();u.x-=d;u.y-=b;c.x+=1*-f-d;c.y+=1*-e-b;return function(){a.begin();a.moveTo(u.x,u.y);l?a.lineTo(u.x-f-e/2,u.y-e+f/2):a.lineTo(u.x+e/2-f,u.y-e-f/2);a.lineTo(u.x-f,u.y-e);a.close();p?
-a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(d,b,c,f,e,g,l,n,u,p){e*=l+u;g*=l+u;var y=f.clone();return function(){d.begin();d.moveTo(y.x,y.y);n?d.lineTo(y.x-e-g/a,y.y-g+e/a):d.lineTo(y.x+g/a-e,y.y-g-e/a);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ga=function(a,d,b){return ya(a,["width"],d,function(d,c,f,e,g){g=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(e.x+c*d/4+f*g/2,e.y+f*d/4-c*g/2)},function(d,c,f,e,g,
-l){d=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));a.style.width=Math.round(2*d)/a.view.scale-b})},ya=function(a,d,b,c,f){return R(a,d,function(d){var f=a.absolutePoints,e=f.length-1;d=a.view.translate;var g=a.view.scale,l=b?f[0]:f[e],f=b?f[1]:f[e-1],e=f.x-l.x,n=f.y-l.y,u=Math.sqrt(e*e+n*n),l=c.call(this,u,e/u,n/u,l,f);return new mxPoint(l.x/g-d.x,l.y/g-d.y)},function(d,c,e){var g=a.absolutePoints,l=g.length-1;d=a.view.translate;var n=a.view.scale,u=b?g[0]:g[l],g=b?g[1]:g[l-1],l=g.x-u.x,
-p=g.y-u.y,y=Math.sqrt(l*l+p*p);c.x=(c.x+d.x)*n;c.y=(c.y+d.y)*n;f.call(this,y,l/y,p/y,u,g,c,e)})},oa=function(a){return function(d){return[R(d,["arrowWidth","arrowSize"],function(d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",P.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",P.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-b)*d.height/2)},function(d,b){this.state.style.arrowWidth=Math.max(0,Math.min(1,
+[a,d,b])))};mxCellRenderer.registerShape("filledEdge",ea);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==d.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,d,b,c,f,e,g,l,n,p){var u=f*(g+n+1),x=e*(g+n+1);return function(){a.begin();
+a.moveTo(c.x-u/2-x/2,c.y-x/2+u/2);a.lineTo(c.x+x/2-3*u/2,c.y-3*x/2-u/2);a.stroke()}});mxMarker.addMarker("cross",function(a,d,b,c,f,e,g,l,n,p){var u=f*(g+n+1),x=e*(g+n+1);return function(){a.begin();a.moveTo(c.x-u/2-x/2,c.y-x/2+u/2);a.lineTo(c.x+x/2-3*u/2,c.y-3*x/2-u/2);a.moveTo(c.x-u/2+x/2,c.y-x/2-u/2);a.lineTo(c.x-x/2-3*u/2,c.y-3*x/2+u/2);a.stroke()}});mxMarker.addMarker("circle",sa);mxMarker.addMarker("circlePlus",function(a,d,b,c,f,e,g,l,n,p){var u=c.clone(),x=sa.apply(this,arguments),t=f*(g+
+2*n),k=e*(g+2*n);return function(){x.apply(this,arguments);a.begin();a.moveTo(u.x-f*n,u.y-e*n);a.lineTo(u.x-2*t+f*n,u.y-2*k+e*n);a.moveTo(u.x-t-k+e*n,u.y-k+t-f*n);a.lineTo(u.x+k-t-e*n,u.y-k-t+f*n);a.stroke()}});mxMarker.addMarker("async",function(a,d,b,c,f,e,g,l,n,u){d=f*n*1.118;b=e*n*1.118;f*=g+n;e*=g+n;var p=c.clone();p.x-=d;p.y-=b;c.x+=1*-f-d;c.y+=1*-e-b;return function(){a.begin();a.moveTo(p.x,p.y);l?a.lineTo(p.x-f-e/2,p.y-e+f/2):a.lineTo(p.x+e/2-f,p.y-e-f/2);a.lineTo(p.x-f,p.y-e);a.close();u?
+a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(d,b,c,f,e,g,l,n,p,u){e*=l+p;g*=l+p;var x=f.clone();return function(){d.begin();d.moveTo(x.x,x.y);n?d.lineTo(x.x-e-g/a,x.y-g+e/a):d.lineTo(x.x+g/a-e,x.y-g-e/a);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ga=function(a,d,b){return ya(a,["width"],d,function(d,c,f,e,g){g=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(e.x+c*d/4+f*g/2,e.y+f*d/4-c*g/2)},function(d,c,f,e,g,
+l){d=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));a.style.width=Math.round(2*d)/a.view.scale-b})},ya=function(a,d,b,c,f){return R(a,d,function(d){var f=a.absolutePoints,e=f.length-1;d=a.view.translate;var g=a.view.scale,l=b?f[0]:f[e],f=b?f[1]:f[e-1],e=f.x-l.x,n=f.y-l.y,p=Math.sqrt(e*e+n*n),l=c.call(this,p,e/p,n/p,l,f);return new mxPoint(l.x/g-d.x,l.y/g-d.y)},function(d,c,e){var g=a.absolutePoints,l=g.length-1;d=a.view.translate;var n=a.view.scale,p=b?g[0]:g[l],g=b?g[1]:g[l-1],l=g.x-p.x,
+u=g.y-p.y,x=Math.sqrt(l*l+u*u);c.x=(c.x+d.x)*n;c.y=(c.y+d.y)*n;f.call(this,x,l/x,u/x,p,g,c,e)})},oa=function(a){return function(d){return[R(d,["arrowWidth","arrowSize"],function(d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",P.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",P.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-b)*d.height/2)},function(d,b){this.state.style.arrowWidth=Math.max(0,Math.min(1,
 Math.abs(d.y+d.height/2-b.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(d.x+d.width-b.x)/d.width))})]}},Ea=function(a,d,b){return function(c){var f=[R(c,["size"],function(b){var c=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*a;return new mxPoint(b.x+c,b.y+c)},function(d,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,b.x-d.x),Math.min(d.height,b.y-d.y)))/a)})];b&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,
 !1)&&f.push(qa(c));return f}},Aa=function(a,d,b,c,f){b=null!=b?b:1;return function(e){var g=[R(e,["size"],function(d){var b=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",b?f:a));return new mxPoint(d.x+Math.max(0,Math.min(d.width,c*(b?1:d.width))),d.getCenterY())},function(a,d,c){var g=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=g?d.x-a.x:Math.max(0,Math.min(b,(d.x-a.x)/a.width));g&&!mxEvent.isAltDown(c.getEvent())&&
 (a=e.view.graph.snap(a));this.state.style.size=a},null,c)];d&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(qa(e));return g}},Ha=function(a){return function(d){var b=[R(d,["size"],function(d){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size))));return new mxPoint(d.x+b*d.width*.75,d.y+d.height/4)},function(d,b){this.state.style.size=Math.max(0,Math.min(a,(b.x-d.x)/(.75*d.width)))},null,!0)];mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,
@@ -2561,25 +2564,25 @@ a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(n.getEvent())||(Math.abs(
 mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,b))):new mxPoint(d.x+Math.max(0,Math.min(d.width,b)),d.getCenterY())},function(d,b){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,b.y-d.y))):Math.round(Math.max(0,Math.min(d.width,b.x-d.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b=
 parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(qa(a,b/2))}return d},label:za(),ext:za(),rectangle:za(),triangle:za(),rhombus:za(),umlLifeline:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",C.prototype.size))));return new mxPoint(a.getCenterX(),a.y+d)},function(a,d){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))},!1)]},umlFrame:function(a){return[R(a,
 ["width","height"],function(a){var d=Math.max(M.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",M.prototype.width))),b=Math.max(1.5*M.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",M.prototype.height)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.width=Math.round(Math.max(M.prototype.corner,Math.min(a.width,d.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*M.prototype.corner,Math.min(a.height,d.y-a.y)))},!1)]},
-process:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(a.x+a.width*d,a.y+a.height/4)},function(a,d){this.state.style.size=Math.max(0,Math.min(.5,(d.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},cross:function(a){return[R(a,["size"],function(a){var d=Math.min(a.width,a.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+process:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(a.x+a.width*d,a.y+a.height/4)},function(a,d){this.state.style.size=Math.max(0,Math.min(.5,(d.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},cross:function(a){return[R(a,["size"],function(a){var d=Math.min(a.width,a.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
 "size",ra.prototype.size)))*d/2;return new mxPoint(a.getCenterX()-d,a.getCenterY()-d)},function(a,d){var b=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-d.y)/b*2,Math.max(0,a.getCenterX()-d.x)/b*2)))})]},note:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(a.x+a.width-d,a.y+d)},function(a,d){this.state.style.size=
 Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-d.x),Math.min(a.height,d.y-a.y))))})]},manualInput:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ca.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*d/4)},function(a,d){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(d.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},dataStorage:function(a){return[R(a,
-["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.x+(1-d)*a.width,a.getCenterY())},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-d.x)/a.width))})]},callout:function(a){var d=[R(a,["size","position"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position)));
-mxUtils.getValue(this.state.style,"base",x.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-d)},function(a,d){mxUtils.getValue(this.state.style,"base",x.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["position2"],function(a){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",x.prototype.position2)));return new mxPoint(a.x+
-d*a.width,a.y+a.height)},function(a,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["base"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))),c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",x.prototype.base)));return new mxPoint(a.x+Math.min(a.width,b*a.width+c),a.y+a.height-
-d)},function(a,d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,d.x-a.x-b*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},internalStorage:function(a){var d=[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",H.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",
+["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.x+(1-d)*a.width,a.getCenterY())},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-d.x)/a.width))})]},callout:function(a){var d=[R(a,["size","position"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",y.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",y.prototype.position)));
+mxUtils.getValue(this.state.style,"base",y.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-d)},function(a,d){mxUtils.getValue(this.state.style,"base",y.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["position2"],function(a){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",y.prototype.position2)));return new mxPoint(a.x+
+d*a.width,a.y+a.height)},function(a,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["base"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",y.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",y.prototype.position))),c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",y.prototype.base)));return new mxPoint(a.x+Math.min(a.width,b*a.width+c),a.y+a.height-
+d)},function(a,d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",y.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,d.x-a.x-b*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},internalStorage:function(a){var d=[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",H.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",
 H.prototype.dy)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,d.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},corner:function(a){return[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",I.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",
 I.prototype.dy)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,d.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},tee:function(a){return[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",L.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",L.prototype.dy)));return new mxPoint(a.x+(a.width+d)/2,a.y+b)},function(a,d){this.state.style.dx=
 Math.round(Math.max(0,2*Math.min(a.width/2,d.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},singleArrow:oa(1),doubleArrow:oa(.5),folder:function(a){return[R(a,["tabWidth","tabHeight"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",q.prototype.tabWidth))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",q.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",q.prototype.tabPosition)==
 mxConstants.ALIGN_RIGHT&&(d=a.width-d);return new mxPoint(a.x+d,a.y+b)},function(a,d){var b=Math.max(0,Math.min(a.width,d.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",q.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);this.state.style.tabWidth=Math.round(b);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},document:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",z.prototype.size))));
 return new mxPoint(a.x+3*a.width/4,a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},tape:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",v.prototype.size))));return new mxPoint(a.getCenterX(),a.y+d*a.height/2)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[R(a,["size"],function(a){var d=
-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},step:Aa(t.prototype.size,!0,null,!0,t.prototype.fixedSize),hexagon:Aa(y.prototype.size,!0,.5,!0),curlyBracket:Aa(l.prototype.size,!1),display:Aa(ia.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,r.prototype.size,!0),loopLimit:Ea(.5,Q.prototype.size,
+Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},step:Aa(t.prototype.size,!0,null,!0,t.prototype.fixedSize),hexagon:Aa(x.prototype.size,!0,.5,!0),curlyBracket:Aa(l.prototype.size,!1),display:Aa(ia.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,r.prototype.size,!0),loopLimit:Ea(.5,Q.prototype.size,
 !0),trapezoid:Ha(.5),parallelogram:Ha(1)};Graph.createHandle=R;Graph.handleFactory=Ba;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=Ba[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=Ba[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null};
 mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ba[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ca=new mxPoint(1,0),Da=new mxPoint(1,0),oa=mxUtils.toRadians(-30),Ca=mxUtils.getRotatedPoint(Ca,Math.cos(oa),Math.sin(oa)),oa=mxUtils.toRadians(-150),
-Da=mxUtils.getRotatedPoint(Da,Math.cos(oa),Math.sin(oa));mxEdgeStyle.IsometricConnector=function(a,d,b,c,f){var e=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,l=g[0],g=g[g.length-1];null!=c&&(c=e.transformControlPoint(a,c));null==l&&null!=d&&(l=new mxPoint(d.getCenterX(),d.getCenterY()));null==g&&null!=b&&(g=new mxPoint(b.getCenterX(),b.getCenterY()));var n=Ca.x,u=Ca.y,p=Da.x,y=Da.y,t="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=l){a=function(a,d,
-b){a-=k.x;var c=d-k.y;d=(y*a-p*c)/(n*y-u*p);a=(u*a-n*c)/(u*p-n*y);t?(b&&(k=new mxPoint(k.x+n*d,k.y+u*d),f.push(k)),k=new mxPoint(k.x+p*a,k.y+y*a)):(b&&(k=new mxPoint(k.x+p*a,k.y+y*a),f.push(k)),k=new mxPoint(k.x+n*d,k.y+u*d));f.push(k)};var k=l;null==c&&(c=new mxPoint(l.x+(g.x-l.x)/2,l.y+(g.y-l.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Na=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,d){if(d==
+Da=mxUtils.getRotatedPoint(Da,Math.cos(oa),Math.sin(oa));mxEdgeStyle.IsometricConnector=function(a,d,b,c,f){var e=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,l=g[0],g=g[g.length-1];null!=c&&(c=e.transformControlPoint(a,c));null==l&&null!=d&&(l=new mxPoint(d.getCenterX(),d.getCenterY()));null==g&&null!=b&&(g=new mxPoint(b.getCenterX(),b.getCenterY()));var n=Ca.x,p=Ca.y,u=Da.x,x=Da.y,t="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=l){a=function(a,d,
+b){a-=k.x;var c=d-k.y;d=(x*a-u*c)/(n*x-p*u);a=(p*a-n*c)/(p*u-n*x);t?(b&&(k=new mxPoint(k.x+n*d,k.y+p*d),f.push(k)),k=new mxPoint(k.x+u*a,k.y+x*a)):(b&&(k=new mxPoint(k.x+u*a,k.y+x*a),f.push(k)),k=new mxPoint(k.x+n*d,k.y+p*d));f.push(k)};var k=l;null==c&&(c=new mxPoint(l.x+(g.x-l.x)/2,l.y+(g.y-l.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Na=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,d){if(d==
 mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Na.apply(this,arguments)};b.prototype.constraints=[];e.prototype.getConstraints=function(a,d,b){a=[];var c=Math.tan(mxUtils.toRadians(30)),f=(.5-c)/2,c=Math.min(d,b/(.5+c));d=(d-c)/2;b=(b-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+c*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,
-b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,b+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+(1-f)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.75*c));return a};x.prototype.getConstraints=function(a,d,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",
+b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,b+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+(1-f)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.75*c));return a};y.prototype.getConstraints=function(a,d,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",
 this.position));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
 0),!1,null,d,.5*(b-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-c)));d>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
 0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];
@@ -2627,7 +2630,7 @@ this.addAction("open...",function(){window.openNew=!0;window.openKey="open";b.op
 320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){b.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){b.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){b.showDialog((new ExportDialog(b)).container,300,230,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(b);b.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...",
 function(){b.showDialog((new PageSetupDialog(b)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){b.showDialog((new PrintDialog(b)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(c,null,10,10)});this.addAction("undo",function(){b.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){b.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",
 function(){mxClipboard.cut(c)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(c)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&mxClipboard.paste(c)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())){c.getModel().beginUpdate();try{var b=mxClipboard.paste(c);if(null!=b){a=!0;for(var e=0;e<b.length&&
-a;e++)a=a&&c.model.isEdge(b[e]);var d=c.view.translate,f=c.view.scale,l=d.x,n=d.y,d=null;if(1==b.length&&a){var g=c.getCellGeometry(b[0]);null!=g&&(d=g.getTerminalPoint(!0))}d=null!=d?d:c.getBoundingBoxFromGeometry(b,a);if(null!=d){var p=Math.round(c.snap(c.popupMenuHandler.triggerX/f-l)),k=Math.round(c.snap(c.popupMenuHandler.triggerY/f-n));c.cellsMoved(b,p-d.x,k-d.y)}}}finally{c.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=c.getSelectionCell();c.isEnabled()&&null!=a&&c.getModel().isVertex(a)&&
+a;e++)a=a&&c.model.isEdge(b[e]);var d=c.view.translate,f=c.view.scale,l=d.x,p=d.y,d=null;if(1==b.length&&a){var g=c.getCellGeometry(b[0]);null!=g&&(d=g.getTerminalPoint(!0))}d=null!=d?d:c.getBoundingBoxFromGeometry(b,a);if(null!=d){var n=Math.round(c.snap(c.popupMenuHandler.triggerX/f-l)),k=Math.round(c.snap(c.popupMenuHandler.triggerY/f-p));c.cellsMoved(b,n-d.x,k-d.y)}}}finally{c.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=c.getSelectionCell();c.isEnabled()&&null!=a&&c.getModel().isVertex(a)&&
 (a=c.getCellGeometry(a),null!=a&&(b.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(c.isEnabled()&&!c.isSelectionEmpty()&&null!=b.copiedSize){c.getModel().beginUpdate();try{var e=c.getSelectionCells();for(a=0;a<e.length;a++)if(c.getModel().isVertex(e[a])){var k=c.getCellGeometry(e[a]);null!=k&&(k=k.clone(),k.width=b.copiedSize.width,k.height=b.copiedSize.height,c.getModel().setGeometry(e[a],k))}}finally{c.getModel().endUpdate()}}},
 null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){c.setSelectionCells(c.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){c.turnShapes(c.getSelectionCells())},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices",
 function(){c.selectVertices()},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){c.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){c.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){c.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!c.isSelectionEmpty()){c.getModel().beginUpdate();try{var a=c.isCellMovable(c.getSelectionCell())?1:0;c.toggleCellStyles(mxConstants.STYLE_MOVABLE,
@@ -2638,7 +2641,7 @@ b.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip.
 null!=a&&c.openLink(a)});this.addAction("editLink...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var c=a.getSelectionCell(),e=a.getLinkForCell(c)||"";b.showLinkDialog(e,mxResources.get("apply"),function(d){d=mxUtils.trim(d);a.setLinkForCell(c,0<d.length?d:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&(c.clearSelection(),b.actions.get("image").funct())})).isEnabled=
 k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&b.showLinkDialog("",mxResources.get("insert"),function(a,b){a=mxUtils.trim(a);if(0<a.length){var e=null,d=c.getLinkTitle(a);null!=b&&0<b.length&&(e=b[0].iconUrl,d=b[0].name||b[0].type,d=d.charAt(0).toUpperCase()+d.substring(1),30<d.length&&(d=d.substring(0,30)+"..."));var f=c.getFreeInsertPoint(),e=new mxCell(d,new mxGeometry(f.x,f.y,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+
 (null!=e?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+e:"spacing=10;"));e.vertex=!0;c.setLinkForCell(e,a);c.cellSizeUpdated(e,!0);c.getModel().beginUpdate();try{e=c.addCell(e),c.fireEvent(new mxEventObject("cellsInserted","cells",[e]))}finally{c.getModel().endUpdate()}c.setSelectionCell(e);c.scrollCellToVisible(c.getSelectionCell())}})})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){var a=b.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var c=
-a.getSelectedElement(),e=a.getParentByName(c,"A",a.cellEditor.textarea),d="";if(null==e&&null!=c&&null!=c.getElementsByTagName)for(var f=c.getElementsByTagName("a"),l=0;l<f.length&&null==e;l++)f[l].textContent==c.textContent&&(e=f[l]);null!=e&&"A"==e.nodeName&&(d=e.getAttribute("href")||"",a.selectNode(e));var n=a.cellEditor.saveSelection();b.showLinkDialog(d,mxResources.get("apply"),mxUtils.bind(this,function(d){a.cellEditor.restoreSelection(n);null!=d&&a.insertLink(d)}))}else a.isSelectionEmpty()?
+a.getSelectedElement(),e=a.getParentByName(c,"A",a.cellEditor.textarea),d="";if(null==e&&null!=c&&null!=c.getElementsByTagName)for(var f=c.getElementsByTagName("a"),l=0;l<f.length&&null==e;l++)f[l].textContent==c.textContent&&(e=f[l]);null!=e&&"A"==e.nodeName&&(d=e.getAttribute("href")||"",a.selectNode(e));var p=a.cellEditor.saveSelection();b.showLinkDialog(d,mxResources.get("apply"),mxUtils.bind(this,function(d){a.cellEditor.restoreSelection(p);null!=d&&a.insertLink(d)}))}else a.isSelectionEmpty()?
 this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var a=c.getSelectionCells();if(null!=a){c.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var e=a[b];if(c.getModel().getChildCount(e))c.updateGroupBounds([e],20);else{var d=c.view.getState(e),f=c.getCellGeometry(e);c.getModel().isVertex(e)&&null!=d&&null!=d.text&&null!=f&&c.isWrapping(e)?(f=f.clone(),f.height=d.text.boundingBox.height/c.view.scale,c.getModel().setGeometry(e,f)):
 c.updateCellSize(e)}}}finally{c.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=c.getView().getState(c.getSelectionCell());if(null!=a){var e="1";c.stopEditing();c.getModel().beginUpdate();try{if("1"==a.style.html){var e=null,k=c.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var d=document.createElement("div");d.innerHTML=k;k=mxUtils.extractTextWithWhitespace(d.childNodes);
 c.cellLabelChanged(a.cell,k)}else k=mxUtils.htmlEntities(c.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),c.cellLabelChanged(a.cell,c.sanitizeHtml(k));c.setCellStyles("html",e);b.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=e?e:"0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}}});this.addAction("wordWrap",function(){var a=c.getView().getState(c.getSelectionCell()),b="wrap";c.stopEditing();
@@ -2667,9 +2670,9 @@ function(b){null!=b&&c.setCellStyle(mxUtils.trim(b),a)},null,null,400,220);this.
 if(null!=a&&c.getModel().isEdge(a)){var b=e.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var k=c.view.translate,d=c.view.scale,f=k.x,k=k.y,a=c.getModel().getParent(a),l=c.getCellGeometry(a);c.getModel().isVertex(a)&&null!=l;)f+=l.x,k+=l.y,a=c.getModel().getParent(a),l=c.getCellGeometry(a);f=Math.round(c.snap(c.popupMenuHandler.triggerX/d-f));d=Math.round(c.snap(c.popupMenuHandler.triggerY/d-k));b.addPointAt(b.state,f,d)}}});this.addAction("removeWaypoint",function(){var a=
 b.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(){var a=c.getSelectionCells();if(null!=a){a=c.addAllEdges(a);c.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var e=a[b];if(c.getModel().isEdge(e)){var d=c.getCellGeometry(e);null!=d&&(d=d.clone(),d.points=null,c.getModel().setGeometry(e,d))}}}finally{c.getModel().endUpdate()}}},null,null,"Alt+Shift+C");m=this.addAction("subscript",mxUtils.bind(this,
 function(){c.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");m=this.addAction("superscript",mxUtils.bind(this,function(){c.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",e=c.getView().getState(c.getSelectionCell()),k="";null!=
-e&&(k=e.style[mxConstants.STYLE_IMAGE]||k);var d=c.cellEditor.saveSelection();b.showImageDialog(a,k,function(a,b,e){if(c.cellEditor.isContentEditing())c.cellEditor.restoreSelection(d),c.insertImage(a,b,e);else{var f=c.getSelectionCells();if(null!=a&&(0<a.length||0<f.length)){var l=null;c.getModel().beginUpdate();try{if(0==f.length){var n=c.getFreeInsertPoint(),l=f=[c.insertVertex(c.getDefaultParent(),null,"",n.x,n.y,b,e,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
-c.fireEvent(new mxEventObject("cellsInserted","cells",l))}c.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,f);var k=c.view.getState(f[0]),t=null!=k?k.style:c.getCellStyle(f[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?c.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==a.length&&c.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==c.getSelectionCount()&&null!=b&&null!=e){var y=f[0],u=c.getModel().getGeometry(y);null!=u&&(u=u.clone(),u.width=b,u.height=e,
-c.getModel().setGeometry(y,u))}}finally{c.getModel().endUpdate()}null!=l&&(c.setSelectionCells(l),c.scrollCellToVisible(l[0]))}}},c.cellEditor.isContentEditing(),!c.cellEditor.isContentEditing())}}).isEnabled=k;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide",
+e&&(k=e.style[mxConstants.STYLE_IMAGE]||k);var d=c.cellEditor.saveSelection();b.showImageDialog(a,k,function(a,b,e){if(c.cellEditor.isContentEditing())c.cellEditor.restoreSelection(d),c.insertImage(a,b,e);else{var f=c.getSelectionCells();if(null!=a&&(0<a.length||0<f.length)){var l=null;c.getModel().beginUpdate();try{if(0==f.length){var p=c.getFreeInsertPoint(),l=f=[c.insertVertex(c.getDefaultParent(),null,"",p.x,p.y,b,e,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
+c.fireEvent(new mxEventObject("cellsInserted","cells",l))}c.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,f);var k=c.view.getState(f[0]),t=null!=k?k.style:c.getCellStyle(f[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?c.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==a.length&&c.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==c.getSelectionCount()&&null!=b&&null!=e){var x=f[0],u=c.getModel().getGeometry(x);null!=u&&(u=u.clone(),u.width=b,u.height=e,
+c.getModel().setGeometry(x,u))}}finally{c.getModel().endUpdate()}null!=l&&(c.setSelectionCells(l),c.scrollCellToVisible(l[0]))}}},c.cellEditor.isContentEditing(),!c.cellEditor.isContentEditing())}}).isEnabled=k;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide",
 function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("layers"))):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));m=this.addAction("formatPanel",mxUtils.bind(this,function(){b.toggleFormatPanel()}),null,null,Editor.ctrlKey+
 "+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return 0<b.formatWidth}));m=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(b,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),
 b.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};
@@ -2679,12 +2682,13 @@ DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E
 DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,b){this.savingFile?null!=b&&b({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,b):this.updateFile(a,b)};
 DrawioFile.prototype.updateFile=function(a,b,e,c){null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():null!=k?this.mergeFile(k,a,b,c):this.reloadFile(a,b))}catch(m){null!=b&&b(m)}}),b))};
 DrawioFile.prototype.mergeFile=function(a,b,e,c){var k=!0;try{this.stats.fileMerged++;var m=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),q=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=q&&0<q.length){this.shadowPages=q;this.backupPatch=this.isModified()?this.ui.diffPages(m,this.ui.pages):null;var r=[this.ui.diffPages(null!=c?c:m,this.shadowPages)];if(!this.ignorePatches(r)){var v=this.ui.patchPages(m,
-r[0]);c={};var z=this.ui.getHashValueForPages(v,c),m={},d=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",r,"checksum",d==z,z);if(null!=z&&z!=d){var f=this.compressReportData(this.getAnonymizedXmlForPages(q)),l=this.compressReportData(this.getAnonymizedXmlForPages(v)),n=this.ui.hashValue(a.getCurrentEtag()),g=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,r,"Shadow Details: "+JSON.stringify(c)+
-"\nChecksum: "+z+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+n+"\nTo: "+g+"\n\nFile Data:\n"+f+"\nPatched Shadow:\n"+l,null,"mergeFile");return}this.patch(r,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(p){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
-null!=e&&e(p);try{this.errorReportsEnabled&&k&&this.sendErrorReport("Error in mergeFile",null,p)}catch(B){}}};DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),e=b.document.createElement("mxfile");if(null!=a)for(var c=0;c<a.length;c++){var k=b.encode(new mxGraphModel(a[c].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[c].getId());a[c].viewState&&this.ui.editor.graph.saveViewState(a[c].viewState,k,!0);e.appendChild(k)}return mxUtils.getPrettyXml(e)};
+r[0]);c={};var z=this.ui.getHashValueForPages(v,c),m={},d=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",r,"checksum",d==z,z);if(null!=z&&z!=d){var f=this.compressReportData(this.getAnonymizedXmlForPages(q)),l=this.compressReportData(this.getAnonymizedXmlForPages(v)),p=this.ui.hashValue(a.getCurrentEtag()),g=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,r,"Shadow Details: "+JSON.stringify(c)+
+"\nChecksum: "+z+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+p+"\nTo: "+g+"\n\nFile Data:\n"+f+"\nPatched Shadow:\n"+l,null,"mergeFile");return}this.patch(r,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(y){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+null!=e&&e(y);try{if(k)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,y);else{var n=this.getCurrentUser(),A=null!=n?n.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),A,y)}}catch(t){}}};
+DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),e=b.document.createElement("mxfile");if(null!=a)for(var c=0;c<a.length;c++){var k=b.encode(new mxGraphModel(a[c].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[c].getId());a[c].viewState&&this.ui.editor.graph.saveViewState(a[c].viewState,k,!0);e.appendChild(k)}return mxUtils.getPrettyXml(e)};
 DrawioFile.prototype.compressReportData=function(a,b,e){b=null!=b?b:1E4;null!=e&&null!=a&&a.length>e?a=a.substring(0,e)+"[...]":null!=a&&a.length>b&&(a=this.ui.editor.graph.compress(a)+"\n");return a};
 DrawioFile.prototype.checksumError=function(a,b,e,c,k){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var m=mxUtils.bind(this,function(a){var c=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)),
-25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=e?e:"")+"\n\nPatches:\n"+c+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==c?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==c?m(a):m(null)}),function(){})}}catch(q){}};
+25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=e?e:"")+"\n\nPatches:\n"+c+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==c?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==c?m(a):m(null)}),function(){})}else{var q=this.getCurrentUser(),r=null!=q?q.id:"unknown";EditorUi.logError("Checksum Error in "+k,null,this.getMode()+"."+this.getId(),r)}}catch(v){}};
 DrawioFile.prototype.sendErrorReport=function(a,b,e,c){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),m=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),q=this.getCurrentUser(),r=null!=q?this.ui.hashValue(q.id):"unknown",v=null!=this.sync?this.sync.clientId:"no sync",z=this.getTitle(),d=z.lastIndexOf("."),q="xml";0<d&&(q=z.substring(d));var f=null!=e?e.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+":\n\nBrowser="+
 navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+q+")\nUser="+r+" ("+v+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=b?"\n\n"+b:"")+(null!=e?"\n\nError: "+
 e.message:"")+"\n\nStack:\n"+f+"\n\nShadow:\n"+k+"\n\nData:\n"+m,c)}catch(l){}};
@@ -2722,7 +2726,8 @@ DrawioFile.prototype.handleConflictError=function(a,b){var e=mxUtils.bind(this,f
 function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,e,c,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),c)});"none"==DrawioFile.SYNC?this.showCopyDialog(e,c,k):this.invalidChecksum?this.showRefreshDialog(e,c,this.getErrorMessage(a)):b?this.showConflictDialog(k,m):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(e,
 c)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null};
 DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()};
-DrawioFile.prototype.fileSaved=function(a,b,e,c){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,e,c,a)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=c&&c(k);try{this.errorReportsEnabled&&this.sendErrorReport("Error in fileSaved",null,k)}catch(m){}}};
+DrawioFile.prototype.fileSaved=function(a,b,e,c){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,e,c,a)}catch(q){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=c&&c(q);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,q);else{var k=this.getCurrentUser(),m=null!=k?k.id:
+"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),m,q)}}catch(r){}}};
 DrawioFile.prototype.autosave=function(a,b,e,c){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<b?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();
 null!=e&&e(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=e&&e(null)}),a);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
 DrawioFile.prototype.isAutosaveRevision=function(){var a=(new Date).getTime();return null==this.lastAutosaveRevision||a-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))};
@@ -2763,7 +2768,7 @@ d.getElementsByTagName("parsererror");if(null!=b&&0<b.length){var b=b[0],c=b.get
 else if(c=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=c){var f=new mxCodec(c.ownerDocument);f.decode(c,this.graph.getStylesheet())}this.graph.currentStyle=b;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");b=d.getAttribute("backgroundImage");null!=b?(b=JSON.parse(b),this.graph.setBackgroundImage(new mxImage(b.src,b.width,b.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&
 !this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var b=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var d=b.apply(this,
 arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&d.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&d.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));d.setAttribute("math",this.graph.mathEnabled?"1":"0");d.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return d};Editor.prototype.isDataSvg=function(a){try{var d=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!=
-d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var b=mxUtils.parseXml(d).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(D){}return!1};Editor.prototype.extractGraphModel=function(a,d){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),c=[];if(null!=b&&0<b.length)for(var f=0;f<b.length;f++)if("mxgraph"==b[f].getAttribute("class")){c.push(b[f]);
+d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var b=mxUtils.parseXml(d).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(B){}return!1};Editor.prototype.extractGraphModel=function(a,d){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),c=[];if(null!=b&&0<b.length)for(var f=0;f<b.length;f++)if("mxgraph"==b[f].getAttribute("class")){c.push(b[f]);
 break}0<c.length&&(b=c[0].getAttribute("data-mxgraph"),null!=b?(c=JSON.parse(b),null!=c&&null!=c.xml&&(c=mxUtils.parseXml(c.xml),a=c.documentElement)):(c=c[0].getElementsByTagName("div"),0<c.length&&(b=mxUtils.getTextContent(c[0]),b=this.graph.decompress(b),0<b.length&&(c=mxUtils.parseXml(b),a=c.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(b=a.getAttribute("content"),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)a=mxUtils.parseXml(b).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||d||(c=null,"diagram"==a.nodeName?c=a:"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),0<b.length&&(c=b[Math.max(0,Math.min(b.length-1,urlParams.page||0))])),null!=c&&(b=this.graph.decompress(mxUtils.getTextContent(c)),null!=b&&0<b.length&&(a=mxUtils.parseXml(b).documentElement)));null==a||"mxGraphModel"==a.nodeName||d&&"mxfile"==a.nodeName||
 (a=null);return a};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};var c=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=
@@ -2807,16 +2812,16 @@ b.size&&(g=g.slice(0,b.size));d=g.join(",");null!=b.countProperty&&(k.setCellSty
 f.push(b.dependentProps[a]);e.push(p)}u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",f,"values",e,"cells",k.getSelectionCells()))}finally{k.getModel().endUpdate()}}function f(d,b,c){var f=mxUtils.getOffset(a,!0),e=mxUtils.getOffset(d,!0);b.style.position="absolute";b.style.left=e.x-f.x+"px";b.style.top=e.y-f.y+"px";b.style.width=d.offsetWidth+"px";b.style.height=d.offsetHeight-(c?4:0)+"px";b.style.zIndex=5}function e(a,d,b){var f=document.createElement("div");f.style.width="32px";f.style.height=
 "4px";f.style.margin="2px";f.style.border="1px solid black";f.style.background=d&&"none"!=d?d:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(u,function(e){this.editorUi.pickColor(d,function(d){f.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;c(a,d,b)});mxEvent.consume(e)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(f);return btn}function g(a,d,b,f,e,g,l){null!=d&&(d=d.split(","),t.push({name:a,
 values:d,type:b,defVal:f,countProperty:e,parentRow:g,isDeletable:!0,flipBkg:l}));btn=mxUtils.button("+",mxUtils.bind(u,function(d){for(var n=g,u=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==a)n=n.nextSibling,u++;else break;var k={type:b,parentRow:g,index:u,isDeletable:!0,defVal:f,countProperty:e},u=p(a,"",k,0==u%2,l);c(a,f,k);n.parentNode.insertBefore(u,n.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}
-function l(a,d,b,c,f,e,g){if(0<f){var l=Array(f);d=null!=d?d.split(","):[];for(var n=0;n<f;n++)l[n]=null!=d[n]?d[n]:null!=c?c:"";t.push({name:a,values:l,type:b,defVal:c,parentRow:e,flipBkg:g,size:f})}return document.createElement("div")}function n(a,d,b){var f=document.createElement("input");f.type="checkbox";f.checked="1"==d;mxEvent.addListener(f,"change",function(){c(a,f.checked?"1":"0",b)});return f}function p(d,b,p,k,t){var y=p.dispName,B=p.type,x=document.createElement("tr");x.className="gePropRow"+
-(t?"Dark":"")+(k?"Alt":"")+" gePropNonHeaderRow";x.setAttribute("data-pName",d);x.setAttribute("data-pValue",b);k=!1;null!=p.index&&(x.setAttribute("data-index",p.index),y=(null!=y?y:"")+"["+p.index+"]",k=!0);var A=document.createElement("td");A.className="gePropRowCell";A.innerHTML=mxUtils.htmlEntities(mxResources.get(y,null,y));k&&(A.style.textAlign="right");x.appendChild(A);A=document.createElement("td");A.className="gePropRowCell";if("color"==B)A.appendChild(e(d,b,p));else if("bool"==B||"boolean"==
-B)A.appendChild(n(d,b,p));else if("enum"==B){var m=p.enumList;for(t=0;t<m.length;t++)if(y=m[t],y.val==b){A.innerHTML=mxUtils.htmlEntities(mxResources.get(y.dispName,null,y.dispName));break}mxEvent.addListener(A,"click",mxUtils.bind(u,function(){var e=document.createElement("select");f(A,e);for(var g=0;g<m.length;g++){var l=m[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(l.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));e.appendChild(n)}e.value=
-b;a.appendChild(e);mxEvent.addListener(e,"change",function(){var a=mxUtils.htmlEntities(e.value);c(d,a,p)});e.focus();mxEvent.addListener(e,"blur",function(){a.removeChild(e)})}))}else"dynamicArr"==B?A.appendChild(g(d,b,p.subType,p.subDefVal,p.countProperty,x,t)):"staticArr"==B?A.appendChild(l(d,b,p.subType,p.subDefVal,p.size,x,t)):(A.innerHTML=b,mxEvent.addListener(A,"click",mxUtils.bind(u,function(){function e(){var a=g.value,a=0==a.length&&"string"!=B?0:a;p.allowAuto&&("auto"==a.trim().toLowerCase()?
-(a="auto",B="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==B?parseInt(a):a)+"");c(d,a,p)}var g=document.createElement("input");f(A,g,!0);g.value=b;g.className="gePropEditor";"int"!=B&&"float"!=B||p.allowAuto||(g.type="number",g.step="int"==B?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&e()});
-g.focus();mxEvent.addListener(g,"blur",function(){e()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(u,function(a){c(d,"",p,p.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",A.appendChild(t));x.appendChild(A);return x}var u=this,k=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var y=document.createElement("table");y.style.whiteSpace="nowrap";y.style.width="100%";var B=document.createElement("tr");
-B.className="gePropHeader";var x=document.createElement("th");x.className="gePropHeaderCell";var A=document.createElement("img");A.src=Sidebar.prototype.expandedImage;x.appendChild(A);mxUtils.write(x,mxResources.get("property"));B.style.cursor="pointer";var m=function(){var d=y.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){A.src=Sidebar.prototype.collapsedImage;b="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var f=a.childNodes[c],e=f.nodeName.toUpperCase();"INPUT"!=
-e&&"SELECT"!=e||a.removeChild(f)}catch(ha){}}else A.src=Sidebar.prototype.expandedImage,b="";for(c=0;c<d.length;c++)d[c].style.display=b};mxEvent.addListener(B,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;m()});B.appendChild(x);x=document.createElement("th");x.className="gePropHeaderCell";x.innerHTML=mxResources.get("value");B.appendChild(x);y.appendChild(B);var q=!1,r=!1,v;for(v in d)if(B=d[v],"function"!=typeof B.isVisible||B.isVisible(b)){var z=null!=b.style[v]?
-mxUtils.htmlEntities(b.style[v]+""):B.defVal;if("separator"==B.type)r=!r;else{if("staticArr"==B.type)B.size=parseInt(b.style[B.sizeProperty]||d[B.sizeProperty].defVal)||0;else if(null!=B.dependentProps){for(var I=B.dependentProps,aa=[],L=[],x=0;x<I.length;x++){var P=b.style[I[x]];L.push(d[I[x]].subDefVal);aa.push(null!=P?P.split(","):[])}B.dependentPropsDefVal=L;B.dependentPropsVals=aa}y.appendChild(p(v,z,B,q,r));q=!q}}for(x=0;x<t.length;x++)for(B=t[x],d=B.parentRow,b=0;b<B.values.length;b++)v=p(B.name,
-B.values[b],{type:B.type,parentRow:B.parentRow,isDeletable:B.isDeletable,index:b,defVal:B.defVal,countProperty:B.countProperty,size:B.size},0==b%2,B.flipBkg),d.parentNode.insertBefore(v,d.nextSibling),d=v;a.appendChild(y);m();return a};StyleFormatPanel.prototype.addStyles=function(a){function d(a){function d(a){var d=mxUtils.button("",function(d){c.getModel().beginUpdate();try{var b=c.getSelectionCells();for(d=0;d<b.length;d++){for(var f=c.getModel().getStyle(b[d]),g=0;g<e.length;g++)f=mxUtils.removeStylename(f,
+function l(a,d,b,c,f,e,g){if(0<f){var l=Array(f);d=null!=d?d.split(","):[];for(var n=0;n<f;n++)l[n]=null!=d[n]?d[n]:null!=c?c:"";t.push({name:a,values:l,type:b,defVal:c,parentRow:e,flipBkg:g,size:f})}return document.createElement("div")}function n(a,d,b){var f=document.createElement("input");f.type="checkbox";f.checked="1"==d;mxEvent.addListener(f,"change",function(){c(a,f.checked?"1":"0",b)});return f}function p(d,b,p,k,t){var x=p.dispName,A=p.type,y=document.createElement("tr");y.className="gePropRow"+
+(t?"Dark":"")+(k?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",d);y.setAttribute("data-pValue",b);k=!1;null!=p.index&&(y.setAttribute("data-index",p.index),x=(null!=x?x:"")+"["+p.index+"]",k=!0);var m=document.createElement("td");m.className="gePropRowCell";m.innerHTML=mxUtils.htmlEntities(mxResources.get(x,null,x));k&&(m.style.textAlign="right");y.appendChild(m);m=document.createElement("td");m.className="gePropRowCell";if("color"==A)m.appendChild(e(d,b,p));else if("bool"==A||"boolean"==
+A)m.appendChild(n(d,b,p));else if("enum"==A){var D=p.enumList;for(t=0;t<D.length;t++)if(x=D[t],x.val==b){m.innerHTML=mxUtils.htmlEntities(mxResources.get(x.dispName,null,x.dispName));break}mxEvent.addListener(m,"click",mxUtils.bind(u,function(){var e=document.createElement("select");f(m,e);for(var g=0;g<D.length;g++){var l=D[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(l.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));e.appendChild(n)}e.value=
+b;a.appendChild(e);mxEvent.addListener(e,"change",function(){var a=mxUtils.htmlEntities(e.value);c(d,a,p)});e.focus();mxEvent.addListener(e,"blur",function(){a.removeChild(e)})}))}else"dynamicArr"==A?m.appendChild(g(d,b,p.subType,p.subDefVal,p.countProperty,y,t)):"staticArr"==A?m.appendChild(l(d,b,p.subType,p.subDefVal,p.size,y,t)):(m.innerHTML=b,mxEvent.addListener(m,"click",mxUtils.bind(u,function(){function e(){var a=g.value,a=0==a.length&&"string"!=A?0:a;p.allowAuto&&("auto"==a.trim().toLowerCase()?
+(a="auto",A="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==A?parseInt(a):a)+"");c(d,a,p)}var g=document.createElement("input");f(m,g,!0);g.value=b;g.className="gePropEditor";"int"!=A&&"float"!=A||p.allowAuto||(g.type="number",g.step="int"==A?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&e()});
+g.focus();mxEvent.addListener(g,"blur",function(){e()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(u,function(a){c(d,"",p,p.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",m.appendChild(t));y.appendChild(m);return y}var u=this,k=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var x=document.createElement("table");x.style.whiteSpace="nowrap";x.style.width="100%";var A=document.createElement("tr");
+A.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var m=document.createElement("img");m.src=Sidebar.prototype.expandedImage;y.appendChild(m);mxUtils.write(y,mxResources.get("property"));A.style.cursor="pointer";var D=function(){var d=x.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){m.src=Sidebar.prototype.collapsedImage;b="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var f=a.childNodes[c],e=f.nodeName.toUpperCase();"INPUT"!=
+e&&"SELECT"!=e||a.removeChild(f)}catch(ha){}}else m.src=Sidebar.prototype.expandedImage,b="";for(c=0;c<d.length;c++)d[c].style.display=b};mxEvent.addListener(A,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;D()});A.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");A.appendChild(y);x.appendChild(A);var q=!1,r=!1,v;for(v in d)if(A=d[v],"function"!=typeof A.isVisible||A.isVisible(b)){var z=null!=b.style[v]?
+mxUtils.htmlEntities(b.style[v]+""):A.defVal;if("separator"==A.type)r=!r;else{if("staticArr"==A.type)A.size=parseInt(b.style[A.sizeProperty]||d[A.sizeProperty].defVal)||0;else if(null!=A.dependentProps){for(var I=A.dependentProps,aa=[],L=[],y=0;y<I.length;y++){var P=b.style[I[y]];L.push(d[I[y]].subDefVal);aa.push(null!=P?P.split(","):[])}A.dependentPropsDefVal=L;A.dependentPropsVals=aa}x.appendChild(p(v,z,A,q,r));q=!q}}for(y=0;y<t.length;y++)for(A=t[y],d=A.parentRow,b=0;b<A.values.length;b++)v=p(A.name,
+A.values[b],{type:A.type,parentRow:A.parentRow,isDeletable:A.isDeletable,index:b,defVal:A.defVal,countProperty:A.countProperty,size:A.size},0==b%2,A.flipBkg),d.parentNode.insertBefore(v,d.nextSibling),d=v;a.appendChild(x);D();return a};StyleFormatPanel.prototype.addStyles=function(a){function d(a){function d(a){var d=mxUtils.button("",function(d){c.getModel().beginUpdate();try{var b=c.getSelectionCells();for(d=0;d<b.length;d++){for(var f=c.getModel().getStyle(b[d]),g=0;g<e.length;g++)f=mxUtils.removeStylename(f,
 e[g]);var l=c.getModel().isVertex(b[d])?c.defaultVertexStyle:c.defaultEdgeStyle;null!=a?(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,null)),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,null)),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(b[d])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,
 a.font||mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,null)))):(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,"#ffffff")),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,"#000000")),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(b[d])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,
 null))));c.getModel().setStyle(b[d],f)}}finally{c.getModel().endUpdate()}});d.className="geStyleButton";d.style.width="36px";d.style.height="30px";d.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?
@@ -2832,10 +2837,10 @@ function(a){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("ti
 this.getInsertPoint=function(){return null!=d?this.getPointForEvent(d):b.apply(this,arguments)};var c=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var d=this.graph.view.getState(a),d=null!=d?d.style:this.graph.getCellStyle(a);if(null!=d){if("undefined"!=typeof mxRackContainer&&"rack"==d.childLayout){var b=new mxStackLayout(this.graph,!1);b.setChildGeometry=function(a,d){d.height=Math.max(d.height,20);if(1<d.height/20){var b=d.height%20;d.height+=10<b?20-b:-b}this.graph.getModel().setGeometry(a,
 d)};b.fill=!0;b.unitSize=mxRackContainer.unitSize|20;b.marginLeft=d.marginLeft||0;b.marginRight=d.marginRight||0;b.marginTop=d.marginTop||0;b.marginBottom=d.marginBottom||0;b.resizeParent=!1;return b}if("undefined"!=typeof mxTableLayout&&"tableLayout"==d.childLayout)return b=new mxTableLayout(this.graph),b.rows=d.tableRows||2,b.columns=d.tableColumns||2,b.colPercentages=d.colPercentages,b.rowPercentages=d.rowPercentages,b.equalColumns="1"==mxUtils.getValue(d,"equalColumns",b.colPercentages?"0":"1"),
 b.equalRows="1"==mxUtils.getValue(d,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(d,"resizeParent","1"),b.border=d.tableBorder||b.border,b.marginLeft=d.marginLeft||0,b.marginRight=d.marginRight||0,b.marginTop=d.marginTop||0,b.marginBottom=d.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(d,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(d,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=d.colWidths||"100",b.rowHeights=d.rowHeights||"50",b}return c.apply(this,arguments)}};
-var n=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return n.apply(this,arguments)&&!mxClient.IS_SF};var g=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var d=g.apply(this,arguments);if(null==d){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(A){null!=window.console&&console.log("Error in vars URL parameter: "+A)}null!=this.globalUrlVars&&(d=
-this.globalUrlVars[a])}return d};var p=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){p.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=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;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var B=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=
-function(){B.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var d=0;d<a.actions.length;d++)if(null!=a.actions[d].open)if(this.isCustomLink(a.actions[d].open)){if(!this.customLinkClicked(a.actions[d].open))return}else this.openLink(a.actions[d].open);this.model.beginUpdate();try{for(d=0;d<a.actions.length;d++)this.handleLinkAction(a.actions[d])}finally{this.model.endUpdate()}}};
+var p=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return p.apply(this,arguments)&&!mxClient.IS_SF};var g=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var d=g.apply(this,arguments);if(null==d){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(D){null!=window.console&&console.log("Error in vars URL parameter: "+D)}null!=this.globalUrlVars&&(d=
+this.globalUrlVars[a])}return d};var n=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){n.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=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;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var A=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=
+function(){A.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var d=0;d<a.actions.length;d++)if(null!=a.actions[d].open)if(this.isCustomLink(a.actions[d].open)){if(!this.customLinkClicked(a.actions[d].open))return}else this.openLink(a.actions[d].open);this.model.beginUpdate();try{for(d=0;d<a.actions.length;d++)this.handleLinkAction(a.actions[d])}finally{this.model.endUpdate()}}};
 Graph.prototype.handleLinkAction=function(a){var d=[];null!=a.select&&this.isEnabled()&&(d=this.getCellsForAction(a.select),this.setSelectionCells(d));null!=a.highlight&&(d=this.getCellsForAction(a.highlight),this.highlightCells(d,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!=
 a.scroll&&(d=this.getCellsForAction(a.scroll));0<d.length&&this.scrollCellToVisible(d[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var d=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var c=this.getDefaultParent(),d=d.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var f=this.model.getCell(a[b]);null!=f&&d.push(f)}return d};Graph.prototype.getCellsForTags=
 function(a,d,b){var c=[];if(null!=a){d=null!=d?d:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var e=null!=d[f].value&&"object"==typeof d[f].value?mxUtils.trim(d[f].value.getAttribute(b)||""):"",g=!0;if(0<e.length)for(var e=e.toLowerCase().split(" "),l=0;l<a.length&&g;l++)var n=mxUtils.trim(a[l]).toLowerCase(),g=g&&(0==n.length||0<=mxUtils.indexOf(e,n));else g=0==a.length;g&&c.push(d[f])}}return c};
@@ -2854,61 +2859,61 @@ mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basi
 [SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.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.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.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.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(a){var d=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?d="mxgraph.er":"sysML"==a.substring(0,5)&&(d="mxgraph.sysml"));return d};var x=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,e,g,l,n,p){if(null!=b&&null==mxMarker.markers[b]){var k=this.getPackageForType(b);null!=k&&mxStencilRegistry.getStencil(k)}return x.apply(this,arguments)};PrintDialog.prototype.create=function(a,d){function b(){B.value=Math.max(1,Math.min(l,Math.max(parseInt(B.value),
-parseInt(u.value))));u.value=Math.max(1,Math.min(l,Math.min(parseInt(B.value),parseInt(u.value))))}function c(d){function b(d,b,f){var e=d.getGraphBounds(),g=0,l=0,n=ja.get(),p=1/d.pageScale,k=q.checked;if(k)var p=parseInt(Z.value),t=parseInt(G.value),p=Math.min(n.height*t/(e.height/d.view.scale),n.width*p/(e.width/d.view.scale));else p=parseInt(y.value)/(100*d.pageScale),isNaN(p)&&(c=1/d.pageScale,y.value="100 %");n=mxRectangle.fromRectangle(n);n.width=Math.ceil(n.width*c);n.height=Math.ceil(n.height*
-c);p*=c;!k&&d.pageVisible?(e=d.getPageLayout(),g-=e.x*n.width,l-=e.y*n.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,p,n,0,g,l,k);b.pageSelector=!1;b.mathEnabled=!1;d=a.getCurrentFile();null!=d&&(b.title=d.getTitle());var u=b.writeHead;b.writeHead=function(d){u.apply(this,arguments);null!=a.editor.fontCss&&(d.writeln('<style type="text/css">'),d.writeln(a.editor.fontCss),d.writeln("</style>"))};if("undefined"!==typeof MathJax){var B=b.renderPage;b.renderPage=function(a,d,b,c,f,e){var g=
-mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=B.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}b.open(null,null,f,!0)}else{n=d.background;if(null==n||""==n||n==mxConstants.NONE)n="#ffffff";b.backgroundColor=n;b.autoOrigin=k;b.appendGraph(d,p,g,l,f,!0)}return b}var c=parseInt(Q.value)/100;isNaN(c)&&(c=1,Q.value="100 %");var c=.75*
-c,e=u.value,g=B.value,l=!k.checked,p=null;l&&(l=e==n&&g==n);if(!l&&null!=a.pages&&a.pages.length){var t=0,l=a.pages.length-1;k.checked||(t=parseInt(e)-1,l=parseInt(g)-1);for(var x=t;x<=l;x++){var m=a.pages[x],e=m==a.currentPage?f:null;if(null==e){var e=a.createTemporaryGraph(f.getStylesheet()),g=!0,t=!1,A=null,D=null;null==m.viewState&&null==m.root&&a.updatePageRoot(m);null!=m.viewState&&(g=m.viewState.pageVisible,t=m.viewState.mathEnabled,A=m.viewState.background,D=m.viewState.backgroundImage);e.background=
-A;e.backgroundImage=null!=D?new mxImage(D.src,D.width,D.height):null;e.pageVisible=g;e.mathEnabled=t;var C=e.getGlobalVariable;e.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?x+1:C.apply(this,arguments)};document.body.appendChild(e.container);a.updatePageRoot(m);e.model.setRoot(m.root)}p=b(e,p,x!=l);e!=f&&e.container.parentNode.removeChild(e.container)}}else p=b(f);null==p?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(p.mathEnabled&&(l=p.wnd.document,
+mxMarker.getPackageForType=function(a){var d=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?d="mxgraph.er":"sysML"==a.substring(0,5)&&(d="mxgraph.sysml"));return d};var y=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,e,g,l,n,p){if(null!=b&&null==mxMarker.markers[b]){var k=this.getPackageForType(b);null!=k&&mxStencilRegistry.getStencil(k)}return y.apply(this,arguments)};PrintDialog.prototype.create=function(a,d){function b(){A.value=Math.max(1,Math.min(l,Math.max(parseInt(A.value),
+parseInt(u.value))));u.value=Math.max(1,Math.min(l,Math.min(parseInt(A.value),parseInt(u.value))))}function c(d){function b(d,b,f){var e=d.getGraphBounds(),g=0,l=0,n=ja.get(),p=1/d.pageScale,k=q.checked;if(k)var p=parseInt(Z.value),t=parseInt(G.value),p=Math.min(n.height*t/(e.height/d.view.scale),n.width*p/(e.width/d.view.scale));else p=parseInt(x.value)/(100*d.pageScale),isNaN(p)&&(c=1/d.pageScale,x.value="100 %");n=mxRectangle.fromRectangle(n);n.width=Math.ceil(n.width*c);n.height=Math.ceil(n.height*
+c);p*=c;!k&&d.pageVisible?(e=d.getPageLayout(),g-=e.x*n.width,l-=e.y*n.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,p,n,0,g,l,k);b.pageSelector=!1;b.mathEnabled=!1;d=a.getCurrentFile();null!=d&&(b.title=d.getTitle());var u=b.writeHead;b.writeHead=function(d){u.apply(this,arguments);null!=a.editor.fontCss&&(d.writeln('<style type="text/css">'),d.writeln(a.editor.fontCss),d.writeln("</style>"))};if("undefined"!==typeof MathJax){var A=b.renderPage;b.renderPage=function(a,d,b,c,f,e){var g=
+mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=A.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}b.open(null,null,f,!0)}else{n=d.background;if(null==n||""==n||n==mxConstants.NONE)n="#ffffff";b.backgroundColor=n;b.autoOrigin=k;b.appendGraph(d,p,g,l,f,!0)}return b}var c=parseInt(Q.value)/100;isNaN(c)&&(c=1,Q.value="100 %");var c=.75*
+c,e=u.value,g=A.value,l=!k.checked,p=null;l&&(l=e==n&&g==n);if(!l&&null!=a.pages&&a.pages.length){var t=0,l=a.pages.length-1;k.checked||(t=parseInt(e)-1,l=parseInt(g)-1);for(var y=t;y<=l;y++){var m=a.pages[y],e=m==a.currentPage?f:null;if(null==e){var e=a.createTemporaryGraph(f.getStylesheet()),g=!0,t=!1,D=null,B=null;null==m.viewState&&null==m.root&&a.updatePageRoot(m);null!=m.viewState&&(g=m.viewState.pageVisible,t=m.viewState.mathEnabled,D=m.viewState.background,B=m.viewState.backgroundImage);e.background=
+D;e.backgroundImage=null!=B?new mxImage(B.src,B.width,B.height):null;e.pageVisible=g;e.mathEnabled=t;var C=e.getGlobalVariable;e.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?y+1:C.apply(this,arguments)};document.body.appendChild(e.container);a.updatePageRoot(m);e.model.setRoot(m.root)}p=b(e,p,y!=l);e!=f&&e.container.parentNode.removeChild(e.container)}}else p=b(f);null==p?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(p.mathEnabled&&(l=p.wnd.document,
 l.writeln('<script type="text/x-mathjax-config">'),l.writeln("MathJax.Hub.Config({"),l.writeln("showMathMenu: false,"),l.writeln('messageStyle: "none",'),l.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),l.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),l.writeln('"HTML-CSS": {'),l.writeln("imageFont: null"),l.writeln("},"),l.writeln("TeX: {"),l.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),l.writeln("},"),
 l.writeln("tex2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("},"),l.writeln("asciimath2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("}"),l.writeln("});"),d&&(l.writeln("MathJax.Hub.Queue(function () {"),l.writeln("window.print();"),l.writeln("});")),l.writeln("\x3c/script>"),l.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>')),p.closeDocument(),!p.mathEnabled&&d&&PrintDialog.printPreview(p))}var f=a.editor.graph,
 e=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,d||mxResources.get("print"));e.appendChild(g);var l=1,n=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-bottom:8px;";k.setAttribute("value","all");k.setAttribute("type","radio");k.setAttribute("name",
 "pages-printdialog");p.appendChild(k);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));p.appendChild(g);mxUtils.br(p);var t=k.cloneNode(!0);k.setAttribute("checked","checked");t.setAttribute("value","range");p.appendChild(t);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");p.appendChild(g);var u=document.createElement("input");u.style.cssText="margin:0 8px 0 8px;";u.setAttribute("value","1");u.setAttribute("type","number");u.setAttribute("min",
-"1");u.style.width="50px";p.appendChild(u);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));p.appendChild(g);var B=u.cloneNode(!0);p.appendChild(B);mxEvent.addListener(u,"focus",function(){t.checked=!0});mxEvent.addListener(B,"focus",function(){t.checked=!0});mxEvent.addListener(u,"change",b);mxEvent.addListener(B,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){n=g+1;u.value=n;B.value=n;break}u.setAttribute("max",
-l);B.setAttribute("max",l);1<l&&e.appendChild(p);var x=document.createElement("div");x.style.marginBottom="10px";var m=document.createElement("input");m.style.marginRight="8px";m.setAttribute("value","adjust");m.setAttribute("type","radio");m.setAttribute("name","printZoom");x.appendChild(m);g=document.createElement("span");mxUtils.write(g,mxResources.get("adjustTo"));x.appendChild(g);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width=
-"50px";x.appendChild(y);mxEvent.addListener(y,"focus",function(){m.checked=!0});e.appendChild(x);var p=p.cloneNode(!1),q=m.cloneNode(!0);q.setAttribute("value","fit");m.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";g.appendChild(q);p.appendChild(g);x=document.createElement("table");x.style.display="inline-block";var r=document.createElement("tbody"),v=document.createElement("tr"),z=v.cloneNode(!0),
+"1");u.style.width="50px";p.appendChild(u);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));p.appendChild(g);var A=u.cloneNode(!0);p.appendChild(A);mxEvent.addListener(u,"focus",function(){t.checked=!0});mxEvent.addListener(A,"focus",function(){t.checked=!0});mxEvent.addListener(u,"change",b);mxEvent.addListener(A,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){n=g+1;u.value=n;A.value=n;break}u.setAttribute("max",
+l);A.setAttribute("max",l);1<l&&e.appendChild(p);var y=document.createElement("div");y.style.marginBottom="10px";var m=document.createElement("input");m.style.marginRight="8px";m.setAttribute("value","adjust");m.setAttribute("type","radio");m.setAttribute("name","printZoom");y.appendChild(m);g=document.createElement("span");mxUtils.write(g,mxResources.get("adjustTo"));y.appendChild(g);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width=
+"50px";y.appendChild(x);mxEvent.addListener(x,"focus",function(){m.checked=!0});e.appendChild(y);var p=p.cloneNode(!1),q=m.cloneNode(!0);q.setAttribute("value","fit");m.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";g.appendChild(q);p.appendChild(g);y=document.createElement("table");y.style.display="inline-block";var r=document.createElement("tbody"),v=document.createElement("tr"),z=v.cloneNode(!0),
 H=document.createElement("td"),I=H.cloneNode(!0),aa=H.cloneNode(!0),L=H.cloneNode(!0),P=H.cloneNode(!0),da=H.cloneNode(!0);H.style.textAlign="right";L.style.textAlign="right";mxUtils.write(H,mxResources.get("fitTo"));var Z=document.createElement("input");Z.style.cssText="margin:0 8px 0 8px;";Z.setAttribute("value","1");Z.setAttribute("min","1");Z.setAttribute("type","number");Z.style.width="40px";I.appendChild(Z);g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsAcross"));
-aa.appendChild(g);mxUtils.write(L,mxResources.get("fitToBy"));var G=Z.cloneNode(!0);P.appendChild(G);mxEvent.addListener(Z,"focus",function(){q.checked=!0});mxEvent.addListener(G,"focus",function(){q.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));da.appendChild(g);v.appendChild(H);v.appendChild(I);v.appendChild(aa);z.appendChild(L);z.appendChild(P);z.appendChild(da);r.appendChild(v);r.appendChild(z);x.appendChild(r);p.appendChild(x);e.appendChild(p);
+aa.appendChild(g);mxUtils.write(L,mxResources.get("fitToBy"));var G=Z.cloneNode(!0);P.appendChild(G);mxEvent.addListener(Z,"focus",function(){q.checked=!0});mxEvent.addListener(G,"focus",function(){q.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));da.appendChild(g);v.appendChild(H);v.appendChild(I);v.appendChild(aa);z.appendChild(L);z.appendChild(P);z.appendChild(da);r.appendChild(v);r.appendChild(z);y.appendChild(r);p.appendChild(y);e.appendChild(p);
 p=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));p.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ja=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));p.appendChild(g);var Q=document.createElement("input");
-Q.style.cssText="margin:0 8px 0 8px;";Q.setAttribute("value","100 %");Q.style.width="60px";p.appendChild(Q);e.appendChild(p);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&g.appendChild(p);a.isOffline()||(x=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),x.className="geBtn",
-g.appendChild(x));PrintDialog.previewEnabled&&(x=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),x.className="geBtn",g.appendChild(x));x=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});x.className="geBtn gePrimaryBtn";g.appendChild(x);a.editor.cancelFirst||g.appendChild(p);e.appendChild(g);this.container=e};var t=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=
+Q.style.cssText="margin:0 8px 0 8px;";Q.setAttribute("value","100 %");Q.style.width="60px";p.appendChild(Q);e.appendChild(p);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&g.appendChild(p);a.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),y.className="geBtn",
+g.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),y.className="geBtn",g.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});y.className="geBtn gePrimaryBtn";g.appendChild(y);a.editor.cancelFirst||g.appendChild(p);e.appendChild(g);this.container=e};var t=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=
 this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),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)):(t.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))}})();
 var ErrorDialog=function(a,b,e,c,k,m,q,r,v,z,d){v=null!=v?v:!0;var f=document.createElement("div");f.style.textAlign="center";if(null!=b){var l=document.createElement("div");l.style.padding="0px";l.style.margin="0px";l.style.fontSize="18px";l.style.paddingBottom="16px";l.style.marginBottom="16px";l.style.borderBottom="1px solid #c0c0c0";l.style.color="gray";l.style.whiteSpace="nowrap";l.style.textOverflow="ellipsis";l.style.overflow="hidden";mxUtils.write(l,b);l.setAttribute("title",b);f.appendChild(l)}b=
-document.createElement("div");b.style.padding="6px";b.innerHTML=e;f.appendChild(b);e=document.createElement("div");e.style.marginTop="16px";e.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",e.appendChild(b),e.style.textAlign="center");null!=z&&(z=mxUtils.button(z,function(){null!=d&&d()}),z.className="geBtn",e.appendChild(z));var n=mxUtils.button(c,function(){v&&a.hideDialog();null!=k&&k()});n.className="geBtn";e.appendChild(n);
-null!=q&&(c=mxUtils.button(q,function(){v&&a.hideDialog();null!=r&&r()}),c.className="geBtn gePrimaryBtn",e.appendChild(c));this.init=function(){n.focus()};f.appendChild(e);this.container=f};
+document.createElement("div");b.style.padding="6px";b.innerHTML=e;f.appendChild(b);e=document.createElement("div");e.style.marginTop="16px";e.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",e.appendChild(b),e.style.textAlign="center");null!=z&&(z=mxUtils.button(z,function(){null!=d&&d()}),z.className="geBtn",e.appendChild(z));var p=mxUtils.button(c,function(){v&&a.hideDialog();null!=k&&k()});p.className="geBtn";e.appendChild(p);
+null!=q&&(c=mxUtils.button(q,function(){v&&a.hideDialog();null!=r&&r()}),c.className="geBtn gePrimaryBtn",e.appendChild(c));this.init=function(){p.focus()};f.appendChild(e);this.container=f};
 (function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,e,c){c.ui=a.ui;return e};a.afterDecode=function(a,e,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(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,e,g){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,e,g);else if(EditorUi.enableLogging)try{if(a!=
 EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var d=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=f+"/log?severity="+d+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+
-":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}}catch(x){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):
+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):
 "")}catch(l){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(l){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);
 console.log.apply(console,a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';
 EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";
 EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=
 !1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(g){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c,
-0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(p){}};c.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(g){}try{b=document.createElement("canvas");b.width=b.height=1;var e=
+0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(n){}};c.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(g){}try{b=document.createElement("canvas");b.width=b.height=1;var e=
 b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==e.match("image/jpeg")}catch(g){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled=
 function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine||
 "1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var d=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),f=d.spin;d.spin=function(c,e){var g=!1;this.active||(f.call(this,c),this.active=!0,null!=e&&(g=document.createElement("div"),g.style.position="absolute",g.style.whiteSpace="nowrap",g.style.background="#4B4243",g.style.color="white",
 g.style.fontFamily="Helvetica, Arial",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,a)+"px",g.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(g.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=e.substring(e.length-3,e.length)&&(e+="..."),g.innerHTML=e,c.appendChild(g),
 d.status=g,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(g.style.left=Math.round(Math.max(0,a-g.offsetWidth/2))+"px",g.style.top=Math.round(Math.max(0,b+70-g.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,e)}));this.stop();return a}),g=!0);return g};var e=d.stop;d.stop=function(){e.call(this);this.active=!1;null!=d.status&&(d.status.parentNode.removeChild(d.status),d.status=null)};
 d.pause=function(){return function(){}};return d};EditorUi.parsePng=function(a,b,c){function d(a,d){var b=e;e+=d;return a.substring(b,e)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var e=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(d(a,4),"IHDR"!=d(a,4))null!=c&&c();else{d(a,17);do{c=f(a);var l=d(a,4);if(null!=b&&b(e-8,l,c))break;value=d(a,c);d(a,4);if("IEND"==l)break}while(c)}};
-EditorUi.prototype.isCompatibleString=function(a){try{var d=mxUtils.parseXml(a),b=this.editor.extractGraphModel(d.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(n){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var b=a.apply(this,arguments);if(null==b)try{var c=d.indexOf("&lt;mxfile ");if(0<=c){var e=d.lastIndexOf("&lt;/mxfile&gt;");e>c&&(b=d.substring(c,e+15).replace(/&gt;/g,">").replace(/&lt;/g,
-"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(d),p=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=p?mxUtils.getXml(p):""}catch(B){}return b};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var d=a.indexOf('<meta charset="utf-8">');0<=d&&(a=a.slice(0,d)+'<meta charset="utf-8"/>'+a.slice(d+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=
-function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a){d=this.editor.graph;d.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var e=c.length-1;0<=e;e--){var p=this.updatePageRoot(new DiagramPage(c[e]));
-null==p.getName()&&p.setName(mxResources.get("pageWithNumber",[e+1]));d.model.execute(new ChangePage(this,p,0==e?p:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=
-this.editor.graph.model.root);if(null!=b)for(e=0;e<b.length;e++)d.model.execute(new ChangePage(this,b[e],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,e,g,p,k,x,t,m){b=null!=b?b:this.editor.graph;g=null!=g?g:!1;t=null!=t?t:!0;var d,f=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":f=d=e;if(null==a)return"";var l=a;if("mxfile"!=l.nodeName.toLowerCase()){var n=b.zapGremlins(mxUtils.getXml(a)),l=b.compress(n);if(b.decompress(l)!=
-n)return n;n=a.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());mxUtils.setTextContent(n,l);l=a.ownerDocument.createElement("mxfile");l.appendChild(n)}m?(l=l.cloneNode(!0),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type"),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("host",
-window.location.hostname),l.setAttribute("agent",navigator.userAgent),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&l.setAttribute("type",a));a=mxUtils.getXml(l);if(!p&&!g&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(l),b,null!=c?c.getTitle():null,d,f);else if(p||!g&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(e=null),a=this.getEmbeddedSvg(a,
-b,e,null,x,t,f);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(d=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(d))),mxUtils.setTextContent(this.currentPage.node,d),d=this.fileNode.cloneNode(!1),b)d.appendChild(this.currentPage.node);else for(var c=0;c<this.pages.length;c++){if(this.currentPage!=this.pages[c]&&this.pages[c].needsUpdate){var f=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[c].root));
+EditorUi.prototype.isCompatibleString=function(a){try{var d=mxUtils.parseXml(a),b=this.editor.extractGraphModel(d.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(p){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var b=a.apply(this,arguments);if(null==b)try{var c=d.indexOf("&lt;mxfile ");if(0<=c){var e=d.lastIndexOf("&lt;/mxfile&gt;");e>c&&(b=d.substring(c,e+15).replace(/&gt;/g,">").replace(/&lt;/g,
+"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(d),n=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=n?mxUtils.getXml(n):""}catch(A){}return b};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var d=a.indexOf('<meta charset="utf-8">');0<=d&&(a=a.slice(0,d)+'<meta charset="utf-8"/>'+a.slice(d+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=
+function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a){d=this.editor.graph;d.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var e=c.length-1;0<=e;e--){var n=this.updatePageRoot(new DiagramPage(c[e]));
+null==n.getName()&&n.setName(mxResources.get("pageWithNumber",[e+1]));d.model.execute(new ChangePage(this,n,0==e?n:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=
+this.editor.graph.model.root);if(null!=b)for(e=0;e<b.length;e++)d.model.execute(new ChangePage(this,b[e],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,e,g,n,k,y,t,m){b=null!=b?b:this.editor.graph;g=null!=g?g:!1;t=null!=t?t:!0;var d,f=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":f=d=e;if(null==a)return"";var l=a;if("mxfile"!=l.nodeName.toLowerCase()){var p=b.zapGremlins(mxUtils.getXml(a)),l=b.compress(p);if(b.decompress(l)!=
+p)return p;p=a.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,l);l=a.ownerDocument.createElement("mxfile");l.appendChild(p)}m?(l=l.cloneNode(!0),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type"),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("host",
+window.location.hostname),l.setAttribute("agent",navigator.userAgent),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&l.setAttribute("type",a));a=mxUtils.getXml(l);if(!n&&!g&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(l),b,null!=c?c.getTitle():null,d,f);else if(n||!g&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(e=null),a=this.getEmbeddedSvg(a,
+b,e,null,y,t,f);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(d=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(d))),mxUtils.setTextContent(this.currentPage.node,d),d=this.fileNode.cloneNode(!1),b)d.appendChild(this.currentPage.node);else for(var c=0;c<this.pages.length;c++){if(this.currentPage!=this.pages[c]&&this.pages[c].needsUpdate){var f=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[c].root));
 this.editor.graph.saveViewState(this.pages[c].viewState,f);mxUtils.setTextContent(this.pages[c].node,this.editor.graph.compressNode(f));delete this.pages[c].needsUpdate}d.appendChild(this.pages[c].node)}return d};EditorUi.prototype.anonymizeString=function(a,b){for(var d=[],c=0;c<a.length;c++){var f=a.charAt(c);0<=EditorUi.ignoredAnonymizedChars.indexOf(f)?d.push(f):isNaN(parseInt(f))?f.toLowerCase()!=f?d.push(String.fromCharCode(65+Math.round(25*Math.random()))):f.toUpperCase()!=f?d.push(String.fromCharCode(97+
-Math.round(25*Math.random()))):/\s/.test(f)?d.push(" "):d.push("?"):d.push(b?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var d=0;d<a[EditorUi.DIFF_INSERT].length;d++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(b)}catch(p){a[EditorUi.DIFF_INSERT][d].data=
-p.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var c in a[EditorUi.DIFF_UPDATE]){var e=a[EditorUi.DIFF_UPDATE][c];null!=e.name&&(e.name=this.anonymizeString(e.name));null!=e.cells&&(d=mxUtils.bind(this,function(a){var d=e.cells[a];if(null!=d){for(var b in d)null!=d[b].value&&(d[b].value="["+d[b].value.length+"]"),null!=d[b].xmlValue&&(d[b].xmlValue="["+d[b].xmlValue.length+"]"),null!=d[b].style&&(d[b].style="["+d[b].style.length+"]"),0==Object.keys(d[b]).length&&delete d[b];0==Object.keys(d).length&&
+Math.round(25*Math.random()))):/\s/.test(f)?d.push(" "):d.push("?"):d.push(b?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var d=0;d<a[EditorUi.DIFF_INSERT].length;d++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(b)}catch(n){a[EditorUi.DIFF_INSERT][d].data=
+n.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var c in a[EditorUi.DIFF_UPDATE]){var e=a[EditorUi.DIFF_UPDATE][c];null!=e.name&&(e.name=this.anonymizeString(e.name));null!=e.cells&&(d=mxUtils.bind(this,function(a){var d=e.cells[a];if(null!=d){for(var b in d)null!=d[b].value&&(d[b].value="["+d[b].value.length+"]"),null!=d[b].xmlValue&&(d[b].xmlValue="["+d[b].xmlValue.length+"]"),null!=d[b].style&&(d[b].style="["+d[b].style.length+"]"),0==Object.keys(d[b]).length&&delete d[b];0==Object.keys(d).length&&
 delete e.cells[a]}}),d(EditorUi.DIFF_INSERT),d(EditorUi.DIFF_UPDATE),0==Object.keys(e.cells).length&&delete e.cells);0==Object.keys(e).length&&delete a[EditorUi.DIFF_UPDATE][c]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var d=0;d<a.attributes.length;d++)"as"!=a.attributes[d].name&&a.setAttribute(a.attributes[d].name,this.anonymizeString(a.attributes[d].value,b));if(null!=a.childNodes)for(d=
 0;d<a.childNodes.length;d++)this.anonymizeAttributes(a.childNodes[d],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var d=a.getElementsByTagName("mxCell"),c=0;c<d.length;c++)null!=d[c].getAttribute("value")&&d[c].setAttribute("value","["+d[c].getAttribute("value").length+"]"),null!=d[c].getAttribute("xmlValue")&&d[c].setAttribute("xmlValue","["+d[c].getAttribute("xmlValue").length+"]"),null!=d[c].getAttribute("style")&&d[c].setAttribute("style","["+d[c].getAttribute("style").length+"]"),null!=
 d[c].parentNode&&"root"!=d[c].parentNode.nodeName&&null!=d[c].parentNode.parentNode&&(d[c].setAttribute("id",d[c].parentNode.getAttribute("id")),d[c].parentNode.parentNode.replaceChild(d[c],d[c].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var d=this.getCurrentFile();null!=d&&(d.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&d.invalidChecksum?d.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(d.clearAutosave(),
-this.editor.setStatus(""),a?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,e,g,p,k,x,t){g=null!=g?g:!0;k=null!=k?k:this.getXmlFileData(g,null!=p?p:!1);t=null!=t?t:this.getCurrentFile();p=this.editor.graph;
-if(null!=this.pages&&this.currentPage!=this.pages[0]&&(b||!a&&null!=t&&/(\.svg)$/i.test(t.getTitle()))){p=this.createTemporaryGraph(p.getStylesheet());var d=p.getGlobalVariable,f=this.pages[0];p.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:d.apply(this,arguments)};document.body.appendChild(p.container);p.model.setRoot(f.root)}a=this.createFileData(k,p,t,window.location.href,a,b,c,e,g,x);p!=this.editor.graph&&p.container.parentNode.removeChild(p.container);return a};
-EditorUi.prototype.getHtml=function(a,b,c,e,g,p){p=null!=p?p:!0;var d=null,f=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var d=p?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),l=b.view.scale;p=Math.floor(d.x/l-b.view.translate.x);l=Math.floor(d.y/l-b.view.translate.y);d=b.background;null==g&&(b=this.getBasenames().join(";"),0<b.length&&(f=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",p);a.setAttribute("y0",l)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom",
+this.editor.setStatus(""),a?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,e,g,n,k,y,t){g=null!=g?g:!0;k=null!=k?k:this.getXmlFileData(g,null!=n?n:!1);t=null!=t?t:this.getCurrentFile();n=this.editor.graph;
+if(null!=this.pages&&this.currentPage!=this.pages[0]&&(b||!a&&null!=t&&/(\.svg)$/i.test(t.getTitle()))){n=this.createTemporaryGraph(n.getStylesheet());var d=n.getGlobalVariable,f=this.pages[0];n.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:d.apply(this,arguments)};document.body.appendChild(n.container);n.model.setRoot(f.root)}a=this.createFileData(k,n,t,window.location.href,a,b,c,e,g,y);n!=this.editor.graph&&n.container.parentNode.removeChild(n.container);return a};
+EditorUi.prototype.getHtml=function(a,b,c,e,g,n){n=null!=n?n:!0;var d=null,f=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var d=n?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),l=b.view.scale;n=Math.floor(d.x/l-b.view.translate.x);l=Math.floor(d.y/l-b.view.translate.y);d=b.background;null==g&&(b=this.getBasenames().join(";"),0<b.length&&(f=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",n);a.setAttribute("y0",l)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom",
 "1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=e&&a.setAttribute("edit",e));null!=g&&(g=g.replace(/&/g,"&amp;"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";e=this.editor.graph.compress(a);this.editor.graph.decompress(e)!=a&&(e=encodeURIComponent(a));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':
 ">")+"\n<head>\n"+(null==g?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+"</head>\n<body"+(null==g&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==g?'<script type="text/javascript" src="'+f+'">\x3c/script>':
 '<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,e,g){b=EditorUi.drawHost+"/js/viewer.min.js";null!=g&&(g=g.replace(/&/g,"&amp;"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=
@@ -2917,29 +2922,29 @@ mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==g?'<script type="tex
 null;var d=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=d&&0<d.length)throw a=mxResources.get("invalidOrMissingFile"),d=d[0].getElementsByTagName("div"),0<d.length&&(a=mxUtils.getTextContent(d[0])),Error(a);d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a&&"mxfile"==a.nodeName&&(d=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<d.length;a++){null==d[a].getAttribute("id")&&
 d[a].setAttribute("id",a);var b=new DiagramPage(d[a]);null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[a+1]));this.pages.push(b)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),
 this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)};EditorUi.prototype.getBaseFilename=function(a){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d)||/(\.drawio)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
-0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(a,b,c,e,g,p,k){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!g),f=d+"."+a;if("xml"==a){var l='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(e)):this.getFileData(!0,null,null,null,e,g));this.saveData(f,a,l,"text/xml")}else if("html"==a)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(f,
-a,l,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?f=d+".png":"jpeg"==a&&(f=d+".jpg"),this.saveRequest(f,a,mxUtils.bind(this,function(d,b){try{var c=this.editor.graph.pageVisible;null!=p&&(this.editor.graph.pageVisible=p);var f=this.createDownloadRequest(d,a,e,b,k,g);this.editor.graph.pageVisible=c;return f}catch(C){this.handleError(C)}}));else{var n=null,B=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(f,
-"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(n)}))});if("svg"==a){var m=this.editor.graph.background;if(k||m==mxConstants.NONE)m=null;var q=this.editor.graph.getSvg(m,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(q);this.convertImages(q,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();B('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+
-mxUtils.getXml(a))})))}else f=d+".svg",n=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();B(a)}),e)}}catch(S){this.handleError(S)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,e,g,p){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==p?!1:"xmlpng"!=b);var f="",l="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==p&&(l="&allPages=1");if("xmlpng"==b&&
-(d="1",b="png",null!=this.pages&&null!=this.currentPage))for(p=0;p<this.pages.length;p++)if(this.pages[p]==this.currentPage){f="&from="+p;break}p=this.editor.graph.background;"png"==b&&g&&(p=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+f+l+"&bg="+(null!=p?p:mxConstants.NONE)+"&base64="+e+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,
+0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(a,b,c,e,g,n,k){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!g),f=d+"."+a;if("xml"==a){var l='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(e)):this.getFileData(!0,null,null,null,e,g));this.saveData(f,a,l,"text/xml")}else if("html"==a)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(f,
+a,l,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?f=d+".png":"jpeg"==a&&(f=d+".jpg"),this.saveRequest(f,a,mxUtils.bind(this,function(d,b){try{var c=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var f=this.createDownloadRequest(d,a,e,b,k,g);this.editor.graph.pageVisible=c;return f}catch(C){this.handleError(C)}}));else{var p=null,A=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(f,
+"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==a){var m=this.editor.graph.background;if(k||m==mxConstants.NONE)m=null;var q=this.editor.graph.getSvg(m,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(q);this.convertImages(q,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();A('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+
+mxUtils.getXml(a))})))}else f=d+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();A(a)}),e)}}catch(S){this.handleError(S)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,e,g,n){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==n?!1:"xmlpng"!=b);var f="",l="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==n&&(l="&allPages=1");if("xmlpng"==b&&
+(d="1",b="png",null!=this.pages&&null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){f="&from="+n;break}n=this.editor.graph.background;"png"==b&&g&&(n=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+f+l+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+e+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,
 b,c){var d=window.location.hash,f=mxUtils.bind(this,function(c){var f=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<f.length&&(f+="\n"),f+=c);c=new LocalFile(this,"csv"!=a.format&&0<f.length?f:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(f,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));
-if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,g=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){d===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),p()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),p=mxUtils.bind(this,function(){window.clearTimeout(g);
-g=window.setTimeout(l,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){p();l()}));p();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function d(a){var d=new mxCellOverlay(a.image||e.warningImage,a.tooltip,a.align,
-a.valign,a.offset);d.addListener(mxEvent.CLICK,function(d,b){c.alert(a.tooltip)});return d}var b=null,c=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var e=this.editor.graph,p=e.getModel();p.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var x=p.getCell(a.getAttribute("id"));if(null!=x){try{var t=a.getAttribute("value");if(null!=t){var m=mxUtils.parseXml(t).documentElement;if(null!=m)if("1"==
-m.getAttribute("replace-value"))p.setValue(x,m);else for(var u=m.attributes,A=0;A<u.length;A++)e.setAttributeForCell(x,u[A].nodeName,0<u[A].nodeValue.length?u[A].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+x.id+": "+M)}try{var q=a.getAttribute("style");null!=q&&e.model.setStyle(x,q)}catch(M){null!=window.console&&console.log("Error in style for "+x.id+": "+M)}try{var r=a.getAttribute("icon");if(null!=r){var v=0<r.length?JSON.parse(r):null;null!=v&&v.append||e.removeCellOverlays(x);
-null!=v&&e.addCellOverlay(x,d(v))}}catch(M){null!=window.console&&console.log("Error in icon for "+x.id+": "+M)}try{var z=a.getAttribute("geometry");if(null!=z){var z=JSON.parse(z),K=e.getCellGeometry(x);if(null!=K){K=K.clone();for(key in z){var E=parseFloat(z[key]);"dx"==key?K.x+=E:"dy"==key?K.y+=E:"dw"==key?K.width+=E:"dh"==key?K.height+=E:K[key]=parseFloat(z[key])}e.model.setGeometry(x,K)}}}catch(M){null!=window.console&&console.log("Error in icon for "+x.id+": "+M)}}}else if("model"==a.nodeName){for(var C=
-a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C=C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,p)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(e.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{p.endUpdate()}null!=
-k&&this.chromelessResize&&this.chromelessResize(!0,k)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",f=d.lastIndexOf(".");0<=f&&(c=d.substring(f),d=d.substring(0,f));if(b)var e=new Date,f=e.getFullYear(),k=e.getMonth()+1,x=e.getDate(),t=e.getHours(),m=e.getMinutes(),e=e.getSeconds(),d=d+(" "+(f+"-"+k+"-"+x+"-"+t+"-"+m+"-"+e));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var d=
+if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,g=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){d===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),n()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),n=mxUtils.bind(this,function(){window.clearTimeout(g);
+g=window.setTimeout(l,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){n();l()}));n();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function d(a){var d=new mxCellOverlay(a.image||e.warningImage,a.tooltip,a.align,
+a.valign,a.offset);d.addListener(mxEvent.CLICK,function(d,b){c.alert(a.tooltip)});return d}var b=null,c=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var e=this.editor.graph,n=e.getModel();n.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var m=n.getCell(a.getAttribute("id"));if(null!=m){try{var t=a.getAttribute("value");if(null!=t){var x=mxUtils.parseXml(t).documentElement;if(null!=x)if("1"==
+x.getAttribute("replace-value"))n.setValue(m,x);else for(var u=x.attributes,q=0;q<u.length;q++)e.setAttributeForCell(m,u[q].nodeName,0<u[q].nodeValue.length?u[q].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+m.id+": "+M)}try{var B=a.getAttribute("style");null!=B&&e.model.setStyle(m,B)}catch(M){null!=window.console&&console.log("Error in style for "+m.id+": "+M)}try{var r=a.getAttribute("icon");if(null!=r){var v=0<r.length?JSON.parse(r):null;null!=v&&v.append||e.removeCellOverlays(m);
+null!=v&&e.addCellOverlay(m,d(v))}}catch(M){null!=window.console&&console.log("Error in icon for "+m.id+": "+M)}try{var z=a.getAttribute("geometry");if(null!=z){var z=JSON.parse(z),K=e.getCellGeometry(m);if(null!=K){K=K.clone();for(key in z){var F=parseFloat(z[key]);"dx"==key?K.x+=F:"dy"==key?K.y+=F:"dw"==key?K.width+=F:"dh"==key?K.height+=F:K[key]=parseFloat(z[key])}e.model.setGeometry(m,K)}}}catch(M){null!=window.console&&console.log("Error in icon for "+m.id+": "+M)}}}else if("model"==a.nodeName){for(var C=
+a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C=C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,n)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(e.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{n.endUpdate()}null!=
+k&&this.chromelessResize&&this.chromelessResize(!0,k)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",f=d.lastIndexOf(".");0<=f&&(c=d.substring(f),d=d.substring(0,f));if(b)var e=new Date,f=e.getFullYear(),k=e.getMonth()+1,m=e.getDate(),t=e.getHours(),x=e.getMinutes(),e=e.getSeconds(),d=d+(" "+(f+"-"+k+"-"+m+"-"+t+"-"+x+"-"+e));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var d=
 this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var b=!1;this.hideDialog();null!=d&&(d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var c=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&&
 (window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();
 delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?
 (this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));b=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),
 title:a.getTitle(),mode:a.getMode()})}catch(g){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(g){}}catch(g){this.fileLoadedError=g;null!=window.console&&console.log("error in fileLoaded:",a,g);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=g&&null!=g.message?":err:"+
-encodeURIComponent(g.message):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}catch(p){}this.handleError(g,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):c()}),!0)}else c();return b};EditorUi.prototype.getHashValueForPages=function(a,b){var d=0,c=new mxGraphModel,f=new mxCodec;null!=b&&(b.byteCount=0,
-b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var e=0;e<a.length;e++){this.updatePageRoot(a[e]);var k=a[e].node.cloneNode(!1);k.removeAttribute("name");c.root=a[e].root;var x=f.encode(c);this.editor.graph.saveViewState(a[e].viewState,x,!0);x.removeAttribute("pageWidth");x.removeAttribute("pageHeight");k.appendChild(x);null!=b&&(b.eltCount+=k.getElementsByTagName("*").length,b.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(a,d,b,c){return!c||"mxGeometry"!=
+encodeURIComponent(g.message):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}catch(n){}this.handleError(g,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):c()}),!0)}else c();return b};EditorUi.prototype.getHashValueForPages=function(a,b){var d=0,c=new mxGraphModel,f=new mxCodec;null!=b&&(b.byteCount=0,
+b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var e=0;e<a.length;e++){this.updatePageRoot(a[e]);var k=a[e].node.cloneNode(!1);k.removeAttribute("name");c.root=a[e].root;var m=f.encode(c);this.editor.graph.saveViewState(a[e].viewState,m,!0);m.removeAttribute("pageWidth");m.removeAttribute("pageHeight");k.appendChild(m);null!=b&&(b.eltCount+=k.getElementsByTagName("*").length,b.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(a,d,b,c){return!c||"mxGeometry"!=
 a.nodeName&&"mxPoint"!=a.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?c&&"mxCell"==a.nodeName&&"previous"==d?null:b:Math.round(b)},b)<<0}return d};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var f=0;f<a.attributes.length;f++){var e=a.attributes[f].name,
 l=null!=b?b(a,e,a.attributes[f].value,!0):a.attributes[f].value;null!=l&&(d^=this.hashValue(e,b,c)+this.hashValue(l,b,c))}}if(null!=a.childNodes)for(f=0;f<a.childNodes.length;f++)d=(d<<5)-d+this.hashValue(a.childNodes[f],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(f=0;f<a.length;f++)b=(b<<5)-b+a.charCodeAt(f)<<0;d^=b}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=
-function(a,b,c,e,g,p,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var d=mxUtils.createXmlDocument(),
+function(a,b,c,e,g,n,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var d=mxUtils.createXmlDocument(),
 b=d.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));d.appendChild(b);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var d=this.sidebar.palettes[a];if(null!=d){for(var b=0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);delete this.sidebar.palettes[a]}};
 EditorUi.prototype.repositionLibrary=function(a){var d=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a=null!=a?a:d.firstChild.nextSibling.nextSibling;var b=d.lastChild,c=b.previousSibling;d.insertBefore(b,a);d.insertBefore(c,b)};EditorUi.prototype.loadLibrary=function(a){var d=mxUtils.parseXml(a.getData());if("mxlibrary"==d.documentElement.nodeName){var b=JSON.parse(mxUtils.getTextContent(d.documentElement));
 this.libraryLoaded(a,b,d.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var f=null,
@@ -2947,19 +2952,19 @@ e=mxUtils.bind(this,function(d,b){0==d.length&&a.isEditable()?(null==f&&(f=docum
 mxUtils.bind(this,function(){d=this.convertDataUri(d);var b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(b+="aspect=fixed;");return this.sidebar.createVertexTemplate(b+"image="+d,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var d=this.stringToCells(this.editor.graph.decompress(a.xml));return this.sidebar.createVertexTemplateFromCells(d,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[l]);
 c=null!=c&&0<c.length?c:a.getTitle();var k=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){e(b,a)}));this.repositionLibrary(d);var t=k.parentNode.previousSibling;c=t.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&t.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var m=document.createElement("div");m.style.position="absolute";m.style.right="0px";m.style.top="0px";m.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(m.style.backgroundColor=
 "inherit");t.style.position="relative";var u=document.createElement("img");u.setAttribute("src",Dialog.prototype.closeImage);u.setAttribute("title",mxResources.get("close"));u.setAttribute("valign","absmiddle");u.setAttribute("border","0");u.style.margin="0 3px";var q=null;if(".scratchpad"!=a.title||this.closableScratchpad)m.appendChild(u),mxEvent.addListener(u,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var b=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=q?this.confirm(mxResources.get("allChangesLost"),
-null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(d)}}));if(a.isEditable()){var D=this.editor.graph,r=null,v=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),k,b,a,a.getMode());mxEvent.consume(d)}),z=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=r&&null!=r.parentNode&&r.parentNode.removeChild(r),r=u.cloneNode(!1),r.setAttribute("src",Editor.spinImage),r.setAttribute("title",mxResources.get("saving")),r.style.cursor="default",
+null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(d)}}));if(a.isEditable()){var B=this.editor.graph,r=null,v=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),k,b,a,a.getMode());mxEvent.consume(d)}),z=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=r&&null!=r.parentNode&&r.parentNode.removeChild(r),r=u.cloneNode(!1),r.setAttribute("src",Editor.spinImage),r.setAttribute("title",mxResources.get("saving")),r.style.cursor="default",
 r.style.marginRight="2px",r.style.marginTop="-2px",m.insertBefore(r,m.firstChild),t.style.paddingRight=18*m.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=r&&null!=r.parentNode&&(r.parentNode.removeChild(r),t.style.paddingRight=18*m.childNodes.length+"px")})):null==q&&(q=u.cloneNode(!1),q.setAttribute("src",IMAGE_PATH+"/download.png"),q.setAttribute("title",mxResources.get("save")),m.insertBefore(q,m.firstChild),mxEvent.addListener(q,"click",mxUtils.bind(this,
-function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==q||a.isModified()||(t.style.paddingRight=18*m.childNodes.length+"px",q.parentNode.removeChild(q),q=null)});mxEvent.consume(d)})),t.style.paddingRight=18*m.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=D.cloneCells(mxUtils.sortCells(D.model.getTopmostCells(a)));for(var g=0;g<a.length;g++){var l=D.getCellGeometry(a[g]);null!=l&&l.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(a,
-d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);z(c);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),E=mxUtils.bind(this,function(a){if(D.isSelectionEmpty())D.getRubberband().isActive()?(D.getRubberband().execute(a),D.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=
-D.getSelectionCells(),b=D.view.getBounds(d),c=D.view.scale;b.x/=c;b.y/=c;b.width/=c;b.height/=c;b.x-=D.view.translate.x;b.y-=D.view.translate.y;K(d,b)}mxEvent.consume(a)});k.style.border="3px solid transparent";mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.panningManager&&null!=D.graphHandler.shape&&(D.graphHandler.shape.node.style.visibility="hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)",
-k.style.cursor="copy",D.panningManager.stop(),D.autoScroll=!1,null!=D.graphHandler.guide&&D.graphHandler.guide.setVisible(!1),null!=D.graphHandler.hint&&(D.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.panningManager&&null!=D.graphHandler&&(k.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"),k.style.cursor="default",this.sidebar.showTooltips=!0,D.panningManager.stop(),D.graphHandler.reset(),
-D.isMouseDown=!1,D.autoScroll=!0,E(a),mxEvent.consume(a))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.graphHandler.shape&&(D.graphHandler.shape.node.style.visibility="visible",k.style.border="3px solid transparent",k.style.cursor="",D.autoScroll=!0,null!=D.graphHandler.guide&&D.graphHandler.guide.setVisible(!0),null!=D.graphHandler.hint&&(D.graphHandler.hint.style.visibility="visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&&
+function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==q||a.isModified()||(t.style.paddingRight=18*m.childNodes.length+"px",q.parentNode.removeChild(q),q=null)});mxEvent.consume(d)})),t.style.paddingRight=18*m.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=B.cloneCells(mxUtils.sortCells(B.model.getTopmostCells(a)));for(var g=0;g<a.length;g++){var l=B.getCellGeometry(a[g]);null!=l&&l.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(a,
+d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);z(c);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),F=mxUtils.bind(this,function(a){if(B.isSelectionEmpty())B.getRubberband().isActive()?(B.getRubberband().execute(a),B.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=
+B.getSelectionCells(),b=B.view.getBounds(d),c=B.view.scale;b.x/=c;b.y/=c;b.width/=c;b.height/=c;b.x-=B.view.translate.x;b.y-=B.view.translate.y;K(d,b)}mxEvent.consume(a)});k.style.border="3px solid transparent";mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(a){B.isMouseDown&&null!=B.panningManager&&null!=B.graphHandler.shape&&(B.graphHandler.shape.node.style.visibility="hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)",
+k.style.cursor="copy",B.panningManager.stop(),B.autoScroll=!1,null!=B.graphHandler.guide&&B.graphHandler.guide.setVisible(!1),null!=B.graphHandler.hint&&(B.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){B.isMouseDown&&null!=B.panningManager&&null!=B.graphHandler&&(k.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"),k.style.cursor="default",this.sidebar.showTooltips=!0,B.panningManager.stop(),B.graphHandler.reset(),
+B.isMouseDown=!1,B.autoScroll=!0,F(a),mxEvent.consume(a))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(a){B.isMouseDown&&null!=B.graphHandler.shape&&(B.graphHandler.shape.node.style.visibility="visible",k.style.border="3px solid transparent",k.style.cursor="",B.autoScroll=!0,null!=B.graphHandler.guide&&B.graphHandler.guide.setVisible(!0),null!=B.graphHandler.hint&&(B.graphHandler.hint.style.visibility="visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&&
 (mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(a){null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(a){k.style.border="3px solid transparent";k.style.cursor="";null!=f&&(f.style.border="3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,
-0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,g,l,p,n,t,u,m){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,K(d,new mxRectangle(0,0,p,n),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var B=!1,x=mxUtils.bind(this,function(d,
-c){if(null!=d&&"text/xml"==c){var g=mxUtils.parseXml(d);if("mxlibrary"==g.documentElement.nodeName)try{var l=JSON.parse(mxUtils.getTextContent(g.documentElement));e(l,k);b=b.concat(l);z(a);this.spinner.stop();B=!0}catch(G){}else if("mxfile"==g.documentElement.nodeName)try{for(var p=g.documentElement.getElementsByTagName("diagram"),g=0;g<p.length;g++){var l=mxUtils.getTextContent(p[g]),n=this.stringToCells(this.editor.graph.decompress(l)),t=this.editor.graph.getBoundingBoxFromGeometry(n);K(n,new mxRectangle(0,
-0,t.width,t.height),a)}B=!0}catch(G){null!=window.console&&console.log("error in drop handler:",G)}}B||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=m&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(m,function(a){x(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,t)&&null!=m?this.parseFile(m,
-mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(d,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(k.style.border="3px solid transparent",k.style.cursor="");a.stopPropagation();a.preventDefault()}));
-u=u.cloneNode(!1);u.setAttribute("src",Editor.editImage);u.setAttribute("title",mxResources.get("edit"));m.insertBefore(u,m.firstChild);mxEvent.addListener(u,"click",v);mxEvent.addListener(k,"dblclick",function(a){mxEvent.getSource(a)==k&&v(a)});c=u.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));m.insertBefore(c,m.firstChild);mxEvent.addListener(c,"click",E);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),
+0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,g,l,n,p,t,u,m){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,n,p),d)],d[0].vertex=!0,K(d,new mxRectangle(0,0,n,p),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var A=!1,y=mxUtils.bind(this,function(d,
+c){if(null!=d&&"text/xml"==c){var g=mxUtils.parseXml(d);if("mxlibrary"==g.documentElement.nodeName)try{var l=JSON.parse(mxUtils.getTextContent(g.documentElement));e(l,k);b=b.concat(l);z(a);this.spinner.stop();A=!0}catch(G){}else if("mxfile"==g.documentElement.nodeName)try{for(var n=g.documentElement.getElementsByTagName("diagram"),g=0;g<n.length;g++){var l=mxUtils.getTextContent(n[g]),p=this.stringToCells(this.editor.graph.decompress(l)),t=this.editor.graph.getBoundingBoxFromGeometry(p);K(p,new mxRectangle(0,
+0,t.width,t.height),a)}A=!0}catch(G){null!=window.console&&console.log("error in drop handler:",G)}}A||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=m&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(m,function(a){y(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,t)&&null!=m?this.parseFile(m,
+mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?y(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):y(d,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(k.style.border="3px solid transparent",k.style.cursor="");a.stopPropagation();a.preventDefault()}));
+u=u.cloneNode(!1);u.setAttribute("src",Editor.editImage);u.setAttribute("title",mxResources.get("edit"));m.insertBefore(u,m.firstChild);mxEvent.addListener(u,"click",v);mxEvent.addListener(k,"dblclick",function(a){mxEvent.getSource(a)==k&&v(a)});c=u.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));m.insertBefore(c,m.firstChild);mxEvent.addListener(c,"click",F);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),
 c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),m.insertBefore(c,m.firstChild))}t.appendChild(m);t.style.paddingRight=18*m.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var d=0;d<a.length;d++){var c=a[d],f=c.data;if(null!=f){var f=this.convertDataUri(f),
 e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==c.aspect&&(e+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(e+"image="+f,c.w,c.h,"",c.title||"",!1,!1,!0))}else null!=c.xml&&(f=this.stringToCells(this.editor.graph.decompress(c.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,c.w,c.h,c.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=
 0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground=
@@ -2970,89 +2975,89 @@ EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.get
 !0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var d=new BackgroundImageDialog(this,mxUtils.bind(this,function(d){a(d)}));this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,e,g){a=new LibraryDialog(this,a,b,c,e,g);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,function(a){a&&null==
 this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var b=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var d=b.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer");a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth=
 "3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=
-function(a,b,c,e){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=a&&null!=a.error?a.error:a;if(null!=f||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),n=null;b=null!=b?b:mxResources.get("error");if(null!=f)if(null!=f.retry&&(l=mxResources.get("cancel"),n=function(){d();f.retry()}),404==f.code||404==f.status||403==f.code){a=403==f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):
+function(a,b,c,e){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=a&&null!=a.error?a.error:a;if(null!=f||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),p=null;b=null!=b?b:mxResources.get("error");if(null!=f)if(null!=f.retry&&(l=mxResources.get("cancel"),p=function(){d();f.retry()}),404==f.code||404==f.status||403==f.code){a=403==f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):
 mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var k=window.location.hash;null!=k&&"#G"==k.substring(0,2)&&(k=k.substring(2),a+='<br><a href="https://drive.google.com/open?id='+k+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=f.message?a=mxUtils.htmlEntities(f.message):null!=f.response&&null!=f.response.error?a=mxUtils.htmlEntities(f.response.error):"undefined"!==window.App&&(f.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")):
-f.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,l,c,n,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,g,p,k,m,t,q,u,A,r){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,g,p,k,A,m,t);this.showDialog(a.container,q||340,u||(null!=b&&120<b.length?180:150),!0,!1,r);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container,
-340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,g,p){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,g);this.showDialog(a.container,340,90,!0,p);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||
+f.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,l,c,p,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,g,n,k,m,t,q,u,D,B){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,g,n,k,D,m,t);this.showDialog(a.container,q||340,u||(null!=b&&120<b.length?180:150),!0,!1,B);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container,
+340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,g,n){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,g);this.showDialog(a.container,340,90,!0,n);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||
 !this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d,"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a,
 b,c){var d="jpeg"==c?"jpg":c,f=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(f,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!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&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,
 b){var d=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,e,g){if(window.Blob&&navigator.msSaveOrOpenBlob)a=e?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),
 c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var d=document.createElement("a"),f=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof d.download;if(mxClient.IS_GC)var l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),f=65==(l?parseInt(l[2],10):!1)?!1:f;if(f||this.isOffline()){d.href=URL.createObjectURL(e?this.base64ToBlob(a,c):new Blob([a],{type:c}));f?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},
-0),d.click(),d.parentNode.removeChild(d)}catch(t){}}else this.createEchoRequest(a,b,c,e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,g,p){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=g?"&format="+g:"")+(null!=p?"&base64="+p:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,f=Math.ceil(c/1024),e=Array(f),
-k=0;k<f;++k){for(var m=1024*k,t=Math.min(m+1024,c),q=Array(t-m),u=0;m<t;++u,++m)q[u]=d[m].charCodeAt(0);e[k]=new Uint8Array(q)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,g,p,k){p=null!=p?p:!1;k=null!=k?k:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(p);b=new CreateDialog(this,b,mxUtils.bind(this,function(d,b){try{if("_blank"==b)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var f=window.open("about:blank");
-null==f?mxUtils.popup(a,!0):(f.document.write(mxUtils.htmlEntities(a,!1)),f.document.close())}else this.openInNewWindow(a,c,e);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,d,c,e):null!=d&&0<d.length&&this.pickFolder(b,mxUtils.bind(this,function(f){try{this.exportFile(a,d,c,e,b,f)}catch(A){this.handleError(A)}}))}catch(u){this.handleError(u)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,p,k,null,1<g,4<g&&(!p||6>g)?3:4,
+0),d.click(),d.parentNode.removeChild(d)}catch(t){}}else this.createEchoRequest(a,b,c,e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,g,n){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=g?"&format="+g:"")+(null!=n?"&base64="+n:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,f=Math.ceil(c/1024),e=Array(f),
+k=0;k<f;++k){for(var m=1024*k,t=Math.min(m+1024,c),q=Array(t-m),u=0;m<t;++u,++m)q[u]=d[m].charCodeAt(0);e[k]=new Uint8Array(q)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,g,n,k){n=null!=n?n:!1;k=null!=k?k:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(n);b=new CreateDialog(this,b,mxUtils.bind(this,function(d,b){try{if("_blank"==b)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var f=window.open("about:blank");
+null==f?mxUtils.popup(a,!0):(f.document.write(mxUtils.htmlEntities(a,!1)),f.document.close())}else this.openInNewWindow(a,c,e);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,d,c,e):null!=d&&0<d.length&&this.pickFolder(b,mxUtils.bind(this,function(f){try{this.exportFile(a,d,c,e,b,f)}catch(D){this.handleError(D)}}))}catch(u){this.handleError(u)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,k,null,1<g,4<g&&(!n||6>g)?3:4,
 a,c,e);this.showDialog(b.container,420,1==g?160:4<g?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+
 b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var e=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var d=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=
 null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var c=d.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";
 this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=c.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=c.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.exportToCanvas(mxUtils.bind(this,function(a){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var d=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",d);this.exportDialog.appendChild(a);
 mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(d.substring(d.indexOf(",")+1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}e.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b,
-c,e,g){this.isLocalFileSave()?this.saveLocalFile(c,a,e,g,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,e,g,b,d)}),c,g,e)};EditorUi.prototype.saveRequest=function(a,b,c,e,g,p,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var f=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=f&&(d==
-App.MODE_DEVICE||"download"==d||"_blank"==d?f.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){p=null!=p?p:"pdf"==b?"application/pdf":"image/"+b;if(null!=e)try{this.exportFile(e,a,p,!0,d,c)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),a,p,!0,d,c)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
-function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<d,4<d?3:4,e,p,g);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,e,g,p){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,e,g,p,k,
-m,t,q){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var f=this.editor.graph.getSvg(d,a,k,m,null,c,null,null,"blank"==q?"_blank":"self"==q?"_top":null);e&&this.editor.graph.addSvgShadow(f);var l=this.getBaseFilename()+".svg",n=mxUtils.bind(this,function(a){this.spinner.stop();g&&a.setAttribute("content",this.getFileData(!0,null,
+c,e,g){this.isLocalFileSave()?this.saveLocalFile(c,a,e,g,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,e,g,b,d)}),c,g,e)};EditorUi.prototype.saveRequest=function(a,b,c,e,g,n,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var f=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=f&&(d==
+App.MODE_DEVICE||"download"==d||"_blank"==d?f.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){n=null!=n?n:"pdf"==b?"application/pdf":"image/"+b;if(null!=e)try{this.exportFile(e,a,n,!0,d,c)}catch(B){this.handleError(B)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),a,n,!0,d,c)}catch(B){this.handleError(B)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
+function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<d,4<d?3:4,e,n,g);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,e,g,n){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,e,g,n,k,
+m,t,q){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var f=this.editor.graph.getSvg(d,a,k,m,null,c,null,null,"blank"==q?"_blank":"self"==q?"_top":null);e&&this.editor.graph.addSvgShadow(f);var l=this.getBaseFilename()+".svg",p=mxUtils.bind(this,function(a){this.spinner.stop();g&&a.setAttribute("content",this.getFileData(!0,null,
 null,null,c,t));if(null!=this.editor.fontCss){var d=a.ownerDocument,d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"style"):d.createElement("style");d.setAttribute("type","text/css");mxUtils.setTextContent(d,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(d)}var b='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",b,"image/svg+xml"):
-this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,f,!1,mxUtils.bind(this,function(){p?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(f,n,this.thumbImageCache)):n(f)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,e,g,p,k){return this.addCheckbox(a,c,e,g,p,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,e,g,p,k,m){p=null!=p?p:!0;var d=document.createElement("input");
-d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();d.id=k;null!=m&&d.setAttribute("name",m);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);e&&d.setAttribute("disabled","disabled");p&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),g||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+
+this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,f,!1,mxUtils.bind(this,function(){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(f,p,this.thumbImageCache)):p(f)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,e,g,n,k){return this.addCheckbox(a,c,e,g,n,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,e,g,n,k,m){n=null!=n?n:!0;var d=document.createElement("input");
+d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();d.id=k;null!=m&&d.setAttribute("name",m);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);e&&d.setAttribute("disabled","disabled");n&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),g||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+
 ":",!0,null,!0);d.style.marginLeft="24px";var c=this.getCurrentFile(),f="";null!=c&&c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var e=document.createElement("select");e.style.width="120px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("makeCopy"));e.appendChild(c);c=document.createElement("option");c.setAttribute("value","custom");mxUtils.write(c,
 mxResources.get("custom")+"...");e.appendChild(c);a.appendChild(e);mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if("custom"==e.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:e.value="blank"},mxResources.get("url"),null,null,null,null,function(){e.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==b||b.checked)?e.removeAttribute("disabled"):e.setAttribute("disabled",
 "disabled")}));mxUtils.br(a);return{getLink:function(){return d.checked?"blank"===e.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return e}}};EditorUi.prototype.addLinkSection=function(a,b){function d(){k.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=e&&e!=mxConstants.NONE?"border:1px solid black;background-color:"+e:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+
 "')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var c=document.createElement("select");c.style.width="100px";c.style.marginLeft="8px";c.style.marginRight="10px";c.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));c.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));c.appendChild(f);f=document.createElement("option");
 f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));c.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),c.appendChild(f));a.appendChild(c);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",k=null,k=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;d()});mxEvent.consume(a)}));d();k.style.padding=
-mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";a.appendChild(k);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,e,g,k,m,x){var d=this.getCurrentFile(),f=[];e&&(f.push("lightbox=1"),"auto"!=a&&f.push("target="+
-a),null!=b&&b!=mxConstants.NONE&&f.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=g&&0<g.length&&f.push("edit="+encodeURIComponent(g)),k&&f.push("layers=1"),this.editor.graph.foldingEnabled&&f.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&f.push("page="+a));a=!0;null!=m?c="#U"+encodeURIComponent(m):(d=this.getCurrentFile(),x||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):
-(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&f.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<f.length?"?"+f.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,g,k,m,x,t,q,u){this.getBasenames();var d={};""!=g&&g!=mxConstants.NONE&&(d.highlight=g);"auto"!==e&&(d.target=e);t||(d.lightbox=
-!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];m&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);x&&c.push("layers");0<c.length&&(t&&c.push("lightbox"),d.toolbar=c.join(" "));null!=q&&0<q.length&&(d.edit=q);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!m);b='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":
+mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";a.appendChild(k);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,e,g,n,k,m){var d=this.getCurrentFile(),f=[];e&&(f.push("lightbox=1"),"auto"!=a&&f.push("target="+
+a),null!=b&&b!=mxConstants.NONE&&f.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=g&&0<g.length&&f.push("edit="+encodeURIComponent(g)),n&&f.push("layers=1"),this.editor.graph.foldingEnabled&&f.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&f.push("page="+a));a=!0;null!=k?c="#U"+encodeURIComponent(k):(d=this.getCurrentFile(),m||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):
+(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&f.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<f.length?"?"+f.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,g,n,k,m,t,q,u){this.getBasenames();var d={};""!=g&&g!=mxConstants.NONE&&(d.highlight=g);"auto"!==e&&(d.target=e);t||(d.lightbox=
+!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];k&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);m&&c.push("layers");0<c.length&&(t&&c.push("lightbox"),d.toolbar=c.join(" "));null!=q&&0<q.length&&(d.edit=q);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!k);b='<div class="mxgraph" style="'+(n?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":
 "")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";u(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,e){var d=document.createElement("div");
 d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("html"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";k.setAttribute("value","url");k.setAttribute("type","radio");k.setAttribute("name",
-"type-embedhtmldialog");f=k.cloneNode(!0);f.setAttribute("value","copy");l.appendChild(f);var n=document.createElement("span");mxUtils.write(n,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(n);mxUtils.br(l);l.appendChild(k);n=document.createElement("span");mxUtils.write(n,mxResources.get("publicDiagramUrl"));l.appendChild(n);var m=this.getCurrentFile();null==c&&null!=m&&m.constructor==window.DriveFile&&(n=document.createElement("a"),n.style.paddingLeft="12px",n.style.color="gray",n.setAttribute("href",
-"javascript:void(0);"),mxUtils.write(n,mxResources.get("share")),l.appendChild(n),mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(m.getId())})));f.setAttribute("checked","checked");null==c&&k.setAttribute("disabled","disabled");d.appendChild(l);var u=this.addLinkSection(d),q=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var r=document.createElement("input");r.setAttribute("type","text");r.style.marginRight="16px";
-r.style.width="60px";r.style.marginLeft="4px";r.style.marginRight="12px";r.value="100%";d.appendChild(r);var v=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,z=z=this.addCheckbox(d,mxResources.get("allPages"),l,!l),N=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,K),C=E.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"):
-C.setAttribute("disabled","disabled");C.checked&&K.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(k.checked?c:null,q.checked,r.value,u.getTarget(),u.getColor(),v.checked,z.checked,N.checked,K.checked,E.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,g,k){var d=document.createElement("div");d.style.whiteSpace=
-"nowrap";var f=document.createElement("h3");mxUtils.write(f,a||mxResources.get("link"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=this.getCurrentFile(),f="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=l&&l.constructor==window.DriveFile&&!b){a=80;var f="https://desk.draw.io/support/solutions/articles/16000039384",p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";
-var n=document.createElement("div");n.style.whiteSpace="normal";mxUtils.write(n,mxResources.get("linkAccountRequired"));p.appendChild(n);n=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));n.style.marginTop="12px";n.className="geBtn";p.appendChild(n);d.appendChild(p);n=document.createElement("a");n.style.paddingLeft="12px";n.style.color="gray";n.style.fontSize="11px";n.setAttribute("href","javascript:void(0);");mxUtils.write(n,mxResources.get("check"));
-p.appendChild(n);mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,q=null;if(null!=c||null!=e)a+=30,mxUtils.write(d,mxResources.get("width")+":"),m=document.createElement("input"),
-m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",d.appendChild(m),mxUtils.write(d,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom="10px",q.value=e+"px",d.appendChild(q),mxUtils.br(d);var r=this.addLinkSection(d,k);c=null!=this.pages&&1<this.pages.length;var v=null;
-if(null==l||l.constructor!=window.DriveFile||b)v=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var z=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,z),E=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=E.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(z,"change",function(){z.checked?(C.removeAttribute("disabled"),E.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),E.setAttribute("disabled",
-"disabled"));E.checked&&z.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){g(r.getTarget(),r.getColor(),null==v?!0:v.checked,z.checked,K.getLink(),C.checked,null!=m?m.value:null,null!=q?q.value:null)}),null,mxResources.get("create"),f);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():
+"type-embedhtmldialog");f=k.cloneNode(!0);f.setAttribute("value","copy");l.appendChild(f);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(p);mxUtils.br(l);l.appendChild(k);p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));l.appendChild(p);var m=this.getCurrentFile();null==c&&null!=m&&m.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.setAttribute("href",
+"javascript:void(0);"),mxUtils.write(p,mxResources.get("share")),l.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(m.getId())})));f.setAttribute("checked","checked");null==c&&k.setAttribute("disabled","disabled");d.appendChild(l);var u=this.addLinkSection(d),q=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var r=document.createElement("input");r.setAttribute("type","text");r.style.marginRight="16px";
+r.style.width="60px";r.style.marginLeft="4px";r.style.marginRight="12px";r.value="100%";d.appendChild(r);var v=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,z=z=this.addCheckbox(d,mxResources.get("allPages"),l,!l),N=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),F=this.addEditButton(d,K),C=F.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"):
+C.setAttribute("disabled","disabled");C.checked&&K.checked?F.getEditSelect().removeAttribute("disabled"):F.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(k.checked?c:null,q.checked,r.value,u.getTarget(),u.getColor(),v.checked,z.checked,N.checked,K.checked,F.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,g,n){var d=document.createElement("div");d.style.whiteSpace=
+"nowrap";var f=document.createElement("h3");mxUtils.write(f,a||mxResources.get("link"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=this.getCurrentFile(),f="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=l&&l.constructor==window.DriveFile&&!b){a=80;var f="https://desk.draw.io/support/solutions/articles/16000039384",k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";
+var p=document.createElement("div");p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));k.appendChild(p);p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));p.style.marginTop="12px";p.className="geBtn";k.appendChild(p);d.appendChild(k);p=document.createElement("a");p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.setAttribute("href","javascript:void(0);");mxUtils.write(p,mxResources.get("check"));
+k.appendChild(p);mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,q=null;if(null!=c||null!=e)a+=30,mxUtils.write(d,mxResources.get("width")+":"),m=document.createElement("input"),
+m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",d.appendChild(m),mxUtils.write(d,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom="10px",q.value=e+"px",d.appendChild(q),mxUtils.br(d);var r=this.addLinkSection(d,n);c=null!=this.pages&&1<this.pages.length;var v=null;
+if(null==l||l.constructor!=window.DriveFile||b)v=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var z=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,z),F=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=F.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(z,"change",function(){z.checked?(C.removeAttribute("disabled"),F.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),F.setAttribute("disabled",
+"disabled"));F.checked&&z.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){g(r.getTarget(),r.getColor(),null==v?!0:v.checked,z.checked,K.getLink(),C.checked,null!=m?m.value:null,null!=q?q.value:null)}),null,mxResources.get("create"),f);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():
 document.execCommand("selectAll",!1,null)):r.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,e){var d=document.createElement("div");d.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:4px";d.appendChild(f);var l=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),k=e?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),
-!0),f=this.editor.graph,n=e?null:this.addCheckbox(d,mxResources.get("transparentBackground"),f.background==mxConstants.NONE||null==f.background);null!=n&&(n.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!l.checked,null!=k?k.checked:!1,null!=n?n.checked:!1)}),null,a,b);this.showDialog(a.container,300,e?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,e,g,k,m,q){m=null!=m?m:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=
-this.editor.graph,l="jpeg"==q?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(p);mxUtils.write(d,mxResources.get("zoom")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px";n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="12px";n.value=this.lastExportZoom||"100%";d.appendChild(n);mxUtils.write(d,mxResources.get("borderWidth")+":");
-var x=document.createElement("input");x.setAttribute("type","text");x.style.marginRight="16px";x.style.width="60px";x.style.marginLeft="4px";x.value=this.lastExportBorder||"0";d.appendChild(x);mxUtils.br(d);var B=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=q),r=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),v=document.createElement("input");v.style.marginTop="16px";v.style.marginRight="8px";v.style.marginLeft="24px";v.setAttribute("disabled",
-"disabled");v.setAttribute("type","checkbox");k&&(d.appendChild(v),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=26,mxEvent.addListener(r,"change",function(){r.checked?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}));f.isSelectionEmpty()||(v.setAttribute("checked","checked"),v.defaultChecked=!0);var E=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type",
-"checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(d.appendChild(C),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),l+=26);var z=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),m,null,null,"jpeg"!=q),O=null!=this.pages&&1<this.pages.length,V=this.addCheckbox(d,O?mxResources.get("allPages"):"",O,!O,null,"jpeg"!=q);V.style.marginLeft="24px";V.style.marginBottom="16px";O||(V.style.display="none");mxEvent.addListener(z,"change",function(){z.checked&&
-O?V.removeAttribute("disabled"):V.setAttribute("disabled","disabled")});m&&O||V.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a);
-a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==q&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),l+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=x.value;this.lastExportZoom=n.value;g(n.value,B.checked,!r.checked,E.checked,z.checked,C.checked,x.value,v.checked,!V.checked,T.value)}),null,c,e);this.showDialog(c.container,340,
-l,!0,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,e,g){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var k=this.addCheckbox(d,mxResources.get("fit"),
-!0),n=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible&&e,!e),m=this.addCheckbox(d,c),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),r=this.addEditButton(d,q),v=r.getEditInput(),z=1<f.model.getChildCount(f.model.getRoot()),N=this.addCheckbox(d,mxResources.get("layers"),z,!z);N.style.marginLeft=v.style.marginLeft;N.style.marginBottom="12px";N.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(z&&N.removeAttribute("disabled"),v.removeAttribute("disabled")):
-(N.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&q.checked?r.getEditSelect().removeAttribute("disabled"):r.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(k.checked,n.checked,m.checked,q.checked,r.getLink(),N.checked)}),null,mxResources.get("embed"),g);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,g,k,m,q){function d(d){var b=" ",l="";e&&(b=" 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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",l+="cursor:pointer;");a&&(l+="max-width:100%;");var p="";c&&(p=' width="'+Math.round(f.width)+'" height="'+Math.round(f.height)+'"');m('<img src="'+d+'"'+p+(""!=l?' style="'+l+'"':"")+b+"/>")}var f=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=e?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null,
-mxUtils.bind(this,function(a){q({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),f.width*f.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var l="";c&&(l="&w="+Math.round(2*f.width)+"&h="+Math.round(2*f.height));var p=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+l+"&xml="+encodeURIComponent(b));p.send(mxUtils.bind(this,function(){200<=p.getStatus()&&299>=p.getStatus()?d("data:image/png;base64,"+p.getText()):q({message:mxResources.get("unknownError")})}))}else q({message:mxResources.get("drawingTooLarge")})};
-EditorUi.prototype.createEmbedSvg=function(a,b,c,e,g,k,m){var d=this.editor.graph.getSvg(),f=d.getElementsByTagName("a");if(null!=f)for(var l=0;l<f.length;l++){var p=f[l].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==f[l].getAttribute("target")&&f[l].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var n=" ",q="";e&&(n="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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",q+="cursor:pointer;");a&&(q+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){m('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=q?' style="'+q+'"':"")+n+"/>")}))}else q="",e&&(d.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('"+
+!0),f=this.editor.graph,p=e?null:this.addCheckbox(d,mxResources.get("transparentBackground"),f.background==mxConstants.NONE||null==f.background);null!=p&&(p.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!l.checked,null!=k?k.checked:!1,null!=p?p.checked:!1)}),null,a,b);this.showDialog(a.container,300,e?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,e,g,n,k,m){k=null!=k?k:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=
+this.editor.graph,l="jpeg"==m?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(p);mxUtils.write(d,mxResources.get("zoom")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value=this.lastExportZoom||"100%";d.appendChild(q);mxUtils.write(d,mxResources.get("borderWidth")+":");
+var y=document.createElement("input");y.setAttribute("type","text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.value=this.lastExportBorder||"0";d.appendChild(y);mxUtils.br(d);var A=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=m),r=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),v=document.createElement("input");v.style.marginTop="16px";v.style.marginRight="8px";v.style.marginLeft="24px";v.setAttribute("disabled",
+"disabled");v.setAttribute("type","checkbox");n&&(d.appendChild(v),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=26,mxEvent.addListener(r,"change",function(){r.checked?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}));f.isSelectionEmpty()||(v.setAttribute("checked","checked"),v.defaultChecked=!0);var F=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type",
+"checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(d.appendChild(C),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),l+=26);var z=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),k,null,null,"jpeg"!=m),O=null!=this.pages&&1<this.pages.length,V=this.addCheckbox(d,O?mxResources.get("allPages"):"",O,!O,null,"jpeg"!=m);V.style.marginLeft="24px";V.style.marginBottom="16px";O||(V.style.display="none");mxEvent.addListener(z,"change",function(){z.checked&&
+O?V.removeAttribute("disabled"):V.setAttribute("disabled","disabled")});k&&O||V.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a);
+a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==m&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),l+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=y.value;this.lastExportZoom=q.value;g(q.value,A.checked,!r.checked,F.checked,z.checked,C.checked,y.value,v.checked,!V.checked,T.value)}),null,c,e);this.showDialog(c.container,340,
+l,!0,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,e,g){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var k=this.addCheckbox(d,mxResources.get("fit"),
+!0),p=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible&&e,!e),m=this.addCheckbox(d,c),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),r=this.addEditButton(d,q),v=r.getEditInput(),z=1<f.model.getChildCount(f.model.getRoot()),N=this.addCheckbox(d,mxResources.get("layers"),z,!z);N.style.marginLeft=v.style.marginLeft;N.style.marginBottom="12px";N.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(z&&N.removeAttribute("disabled"),v.removeAttribute("disabled")):
+(N.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&q.checked?r.getEditSelect().removeAttribute("disabled"):r.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(k.checked,p.checked,m.checked,q.checked,r.getLink(),N.checked)}),null,mxResources.get("embed"),g);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,g,k,m,q){function d(d){var b=" ",l="";e&&(b=" 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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",l+="cursor:pointer;");a&&(l+="max-width:100%;");var n="";c&&(n=' width="'+Math.round(f.width)+'" height="'+Math.round(f.height)+'"');m('<img src="'+d+'"'+n+(""!=l?' style="'+l+'"':"")+b+"/>")}var f=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=e?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null,
+mxUtils.bind(this,function(a){q({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),f.width*f.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var l="";c&&(l="&w="+Math.round(2*f.width)+"&h="+Math.round(2*f.height));var n=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+l+"&xml="+encodeURIComponent(b));n.send(mxUtils.bind(this,function(){200<=n.getStatus()&&299>=n.getStatus()?d("data:image/png;base64,"+n.getText()):q({message:mxResources.get("unknownError")})}))}else q({message:mxResources.get("drawingTooLarge")})};
+EditorUi.prototype.createEmbedSvg=function(a,b,c,e,g,k,m){var d=this.editor.graph.getSvg(),f=d.getElementsByTagName("a");if(null!=f)for(var l=0;l<f.length;l++){var n=f[l].getAttribute("href");null!=n&&"#"==n.charAt(0)&&"_blank"==f[l].getAttribute("target")&&f[l].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var p=" ",q="";e&&(p="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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",q+="cursor:pointer;");a&&(q+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){m('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=q?' style="'+q+'"':"")+p+"/>")}))}else q="",e&&(d.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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),q+="cursor:pointer;"),a&&(a=parseInt(d.getAttribute("width")),b=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),q+="max-width:100%;max-height:"+b+"px;",d.removeAttribute("height")),""!=q&&d.setAttribute("style",q),m(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var d=Math.floor(a/31536E3);if(1<d)return d+" "+mxResources.get("years");
 d=Math.floor(a/2592E3);if(1<d)return d+" "+mxResources.get("months");d=Math.floor(a/86400);if(1<d)return d+" "+mxResources.get("days");d=Math.floor(a/3600);if(1<d)return d+" "+mxResources.get("hours");d=Math.floor(a/60);return 1<d?d+" "+mxResources.get("minutes"):1==d?d+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,e){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,
 function(){e()}))}),0)):e()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var d=null;if("diagram"==a.nodeName)d=a;else if("mxfile"==a.nodeName){var c=a.getElementsByTagName("diagram");if(0<c.length){var d=c[0],e=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:e.apply(this,arguments)}}}null!=d&&(c=b.decompress(mxUtils.getTextContent(d)),null!=c&&0<c.length&&(a=mxUtils.parseXml(c).documentElement))}c=
-this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(p){}finally{this.editor.graph=c}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,e=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),e=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()),
-f=d.getGlobalVariable,l=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(l.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==e&&(e=this.getFileData(!0));var f=c.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"zTXt","mxGraphModel",atob(this.editor.graph.compress(e)));a(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(y){null!=
-b&&b(y)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,e,g,k,m){m=b.background;m==mxConstants.NONE&&(m=null);k=b.getSvg(m,null,null,null,null,k);b.shadowVisible&&b.addSvgShadow(k);null!=a&&k.setAttribute("content",a);null!=c&&k.setAttribute("resource",c);if(null!=g)this.convertImages(k,mxUtils.bind(this,function(a){g((e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
+this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(n){}finally{this.editor.graph=c}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,e=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),e=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()),
+f=d.getGlobalVariable,l=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(l.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==e&&(e=this.getFileData(!0));var f=c.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"zTXt","mxGraphModel",atob(this.editor.graph.compress(e)));a(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(x){null!=
+b&&b(x)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,e,g,k,m){m=b.background;m==mxConstants.NONE&&(m=null);k=b.getSvg(m,null,null,null,null,k);b.shadowVisible&&b.addSvgShadow(k);null!=a&&k.setAttribute("content",a);null!=c&&k.setAttribute("resource",c);if(null!=g)this.convertImages(k,mxUtils.bind(this,function(a){g((e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
 mxUtils.getXml(a))}));else return(e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(k)};EditorUi.prototype.exportImage=function(a,b,c,e,g,k,m,q,t){t=null!=t?t:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();
-try{this.saveCanvas(a,g?this.getFileData(!0,null,null,null,c,q):null,t)}catch(A){"Invalid image"==A.message?this.downloadFile(t):this.handleError(A)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,m)}catch(u){this.spinner.stop(),this.handleError(u)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var d=function(a){return a.replace(RegExp("^[\\s\"']+","g"),
+try{this.saveCanvas(a,g?this.getFileData(!0,null,null,null,c,q):null,t)}catch(D){"Invalid image"==D.message?this.downloadFile(t):this.handleError(D)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,m)}catch(u){this.spinner.stop(),this.handleError(u)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var d=function(a){return a.replace(RegExp("^[\\s\"']+","g"),
 "").replace(RegExp("[\\s\"']+$","g"),"")},b=this.editor.fontCss.split("url("),c=0,e={},k=mxUtils.bind(this,function(){if(0==c){for(var f=[b[0]],g=1;g<b.length;g++){var l=b[g].indexOf(")");f.push('url("');f.push(e[d(b[g].substring(0,l))]);f.push('"'+b[g].substring(l))}this.editor.resolvedFontCss=f.join("");a()}});if(0<b.length)for(var m=1;m<b.length;m++){var q=b[m].indexOf(")"),t=null,r=b[m].indexOf("format(",q);0<r&&(t=d(b[m].substring(r+7,b[m].indexOf(")",r))));mxUtils.bind(this,function(a){if(null==
 e[a]){e[a]=a;c++;var d="application/x-font-ttf";if("svg"==t||/(\.svg)($|\?)/i.test(a))d="image/svg+xml";else if("otf"==t||"embedded-opentype"==t||/(\.otf)($|\?)/i.test(a))d="application/x-font-opentype";else if("woff"==t||/(\.woff)($|\?)/i.test(a))d="application/font-woff";else if("woff2"==t||/(\.woff2)($|\?)/i.test(a))d="application/font-woff2";else if("eot"==t||/(\.eot)($|\?)/i.test(a))d="application/vnd.ms-fontobject";else if("sfnt"==t||/(\.sfnt)($|\?)/i.test(a))d="application/font-sfnt";var b=
-a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(d){e[a]=d;c--;k()}),mxUtils.bind(this,function(a){c--;k()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(d(b[m].substring(0,q)),t)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,g,k,m,q,t,r,u,A,D,v){k=null!=k?k:!0;A=null!=A?A:this.editor.graph;D=null!=D?D:0;var d=t?null:A.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==t&&
-(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(A.getSvg(d,null,null,v,null,null!=m?m:!0,null,null,null,r),mxUtils.bind(this,function(c){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=document.createElement("canvas"),l=parseInt(c.getAttribute("width")),p=parseInt(c.getAttribute("height"));q=null!=q?q:1;null!=b&&(q=k?Math.min(1,Math.min(3*b/(4*p),b/l)):b/l);l=Math.ceil(q*l)+2*D;p=Math.ceil(q*p)+2*D;f.setAttribute("width",l);f.setAttribute("height",p);var n=f.getContext("2d");
-null!=d&&(n.beginPath(),n.rect(0,0,l,p),n.fillStyle=d,n.fill());n.scale(q,q);mxClient.IS_SF?window.setTimeout(function(){n.drawImage(e,D/q,D/q);a(f)},0):(n.drawImage(e,D/q,D/q),a(f))}catch(T){null!=g&&g(T)}});e.onerror=function(a){null!=g&&g(a)};try{r&&this.editor.graph.addSvgShadow(c);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(A,
+a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(d){e[a]=d;c--;k()}),mxUtils.bind(this,function(a){c--;k()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(d(b[m].substring(0,q)),t)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,g,k,m,q,t,r,u,D,B,v){k=null!=k?k:!0;D=null!=D?D:this.editor.graph;B=null!=B?B:0;var d=t?null:D.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==t&&
+(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(D.getSvg(d,null,null,v,null,null!=m?m:!0,null,null,null,r),mxUtils.bind(this,function(c){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=document.createElement("canvas"),l=parseInt(c.getAttribute("width")),n=parseInt(c.getAttribute("height"));q=null!=q?q:1;null!=b&&(q=k?Math.min(1,Math.min(3*b/(4*n),b/l)):b/l);l=Math.ceil(q*l)+2*B;n=Math.ceil(q*n)+2*B;f.setAttribute("width",l);f.setAttribute("height",n);var p=f.getContext("2d");
+null!=d&&(p.beginPath(),p.rect(0,0,l,n),p.fillStyle=d,p.fill());p.scale(q,q);mxClient.IS_SF?window.setTimeout(function(){p.drawImage(e,B/q,B/q);a(f)},0):(p.drawImage(e,B/q,B/q),a(f))}catch(T){null!=g&&g(T)}});e.onerror=function(a){null!=g&&g(a)};try{r&&this.editor.graph.addSvgShadow(c);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(D,
 c,!0,mxUtils.bind(this,function(){e.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(f)}catch(C){null!=g&&g(C)}}),c,u)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var e="http://"==d.substring(0,7)||"https://"==d.substring(0,8);e&&!navigator.onLine?d=c.svgBrokenImage.src:!e||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!=
 d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,e){null==e&&(e=this.createImageUrlConverter());var d=0,f=c||{};c=mxUtils.bind(this,function(c,g){for(var l=a.getElementsByTagName(c),k=0;k<l.length;k++)mxUtils.bind(this,function(c){var l=e.convert(c.getAttribute(g));if(null!=l&&"data:"!=l.substring(0,5)){var k=f[l];null==k?(d++,this.convertImageToDataUri(l,function(e){null!=e&&(f[l]=e,c.setAttribute(g,
 e));d--;0==d&&b(a)})):c.setAttribute(g,k)}else null!=l&&c.setAttribute(g,l)})(l[k])});c("image","xlink:href");c("img","src");0==d&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,e,g,k){try{var d=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);g=null!=g?g:!0;var f=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var e=a.getText();if(d){if((9==document.documentMode||10==document.documentMode)&&
 "undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),f=0;f<a.length;f++)e[f]=String.fromCharCode(a[f]);e=e.join("")}k=null!=k?k:"data:image/png;base64,";e=k+this.base64Encode(e)}b(e)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},d,this.timeout,function(){g&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:f})})});f()}catch(t){null!=c&&c(t)}};EditorUi.prototype.isCorsEnabledForUrl=
 function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};EditorUi.prototype.convertImageToDataUri=
-function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var d=new Image,c=this;this.crossOriginImages&&(d.crossOrigin="anonymous");d.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=d.height;a.width=d.width;e.drawImage(d,0,0);try{b(a.toDataURL())}catch(B){b(c.svgBrokenImage.src)}};d.onerror=function(){b(c.svgBrokenImage.src)};d.src=a}};EditorUi.prototype.importXml=
-function(a,b,c,e,g){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var f=this.editor.graph;if(null!=a&&0<a.length){var l=mxUtils.parseXml(a),k=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var n=k.getElementsByTagName("diagram");if(1==n.length)k=mxUtils.parseXml(f.decompress(mxUtils.getTextContent(n[0]))).documentElement;else if(1<n.length){f.model.beginUpdate();try{for(a=0;a<n.length;a++){n[a].removeAttribute("id");var m=this.updatePageRoot(new DiagramPage(n[a])),
-q=this.pages.length;null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,m,m,q))}}finally{f.model.endUpdate()}}}null!=k&&"mxGraphModel"===k.nodeName&&(d=f.importGraphModel(k,b,c,e))}}catch(D){if(g)throw D;this.handleError(D)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,e){e=null!=e?e:a.name;c=null!=c?c:mxUtils.bind(this,
-function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(e)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,e);var f=new XMLHttpRequest;f.open("POST",VSD_CONVERT_URL);f.responseType="blob";f.onreadystatechange=mxUtils.bind(this,function(){if(4==f.readyState)if(200<=f.status&&299>=f.status)try{f.response.name=e,this.doImportVisio(f.response,b,c)}catch(x){c(x)}else c({})});f.send(d)}else try{this.doImportVisio(a,
-b,c)}catch(x){c(x)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(g){c(g)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
+function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var d=new Image,c=this;this.crossOriginImages&&(d.crossOrigin="anonymous");d.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=d.height;a.width=d.width;e.drawImage(d,0,0);try{b(a.toDataURL())}catch(A){b(c.svgBrokenImage.src)}};d.onerror=function(){b(c.svgBrokenImage.src)};d.src=a}};EditorUi.prototype.importXml=
+function(a,b,c,e,g){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var f=this.editor.graph;if(null!=a&&0<a.length){var l=mxUtils.parseXml(a),k=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var p=k.getElementsByTagName("diagram");if(1==p.length)k=mxUtils.parseXml(f.decompress(mxUtils.getTextContent(p[0]))).documentElement;else if(1<p.length){f.model.beginUpdate();try{for(a=0;a<p.length;a++){p[a].removeAttribute("id");var m=this.updatePageRoot(new DiagramPage(p[a])),
+q=this.pages.length;null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,m,m,q))}}finally{f.model.endUpdate()}}}null!=k&&"mxGraphModel"===k.nodeName&&(d=f.importGraphModel(k,b,c,e))}}catch(B){if(g)throw B;this.handleError(B)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,e){e=null!=e?e:a.name;c=null!=c?c:mxUtils.bind(this,
+function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(e)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,e);var f=new XMLHttpRequest;f.open("POST",VSD_CONVERT_URL);f.responseType="blob";f.onreadystatechange=mxUtils.bind(this,function(){if(4==f.readyState)if(200<=f.status&&299>=f.status)try{f.response.name=e,this.doImportVisio(f.response,b,c)}catch(y){c(y)}else c({})});f.send(d)}else try{this.doImportVisio(a,
+b,c)}catch(y){c(y)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(g){c(g)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
 d))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(f){this.handleError(f)}});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline()?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,c){var d=mxUtils.bind(this,
 function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(g){c(g)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph,
 e=null;d.getModel().beginUpdate();try{e=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(e,!0)}finally{d.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(a,b,c,e,g,k,m){k=null!=k?k:!0;m=null!=m?m:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this,
@@ -3069,44 +3074,44 @@ function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary
 a+";")])):/(\.*<graphml )/.test(a)?(d=!0,this.importGraphML(a,l)):null!=t&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(d=!0,this.importVisio(t,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(d=!0,this.parseFile(null!=t?t:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?l(a.responseText):null!=q&&q(null))}),m)):/(\.v(sd|dx))($|\?)/i.test(m)||/(\.vs(s|x))($|\?)/i.test(m)||
 (f=this.insertTextAt(this.validateFileData(a),c,e,!0,null,r));d||null==q||q(f);return f};EditorUi.prototype.base64Encode=function(a){for(var b="",d=0,c=a.length,e,k,m;d<c;){e=a.charCodeAt(d++)&255;if(d==c){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}k=a.charCodeAt(d++);if(d==c){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);
 b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);b+="=";break}m=a.charCodeAt(d++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(m&192)>>6);b+=
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,g,k,m,q,t,r,u,A){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;r=null!=r?r:this.maxImageBytes;var d=null!=b&&null!=c,f=!0,l=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var p=u||this.resampleThreshold,n=0;n<a.length;n++)if("image/"==a[n].type.substring(0,6)&&a[n].size>p){l=!0;break}var x=mxUtils.bind(this,function(){var l=this.editor.graph,p=l.gridSize;
-g=null!=g?g:mxUtils.bind(this,function(a,b,c,e,f,g,l,k,p){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,e,f,g,l,k,p,d,A)});k=null!=k?k:mxUtils.bind(this,function(a){l.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var n=a.length,t=n,x=[],B=mxUtils.bind(this,function(a,b){x[a]=b;if(0==--t){this.spinner.stop();if(null!=q)q(x);else{var d=[];l.getModel().beginUpdate();
-try{for(var c=0;c<x.length;c++){var e=x[c]();null!=e&&(d=d.concat(e))}}finally{l.getModel().endUpdate()}}k(d)}}),E=0;E<n;E++)mxUtils.bind(this,function(d){var k=a[d];if(null!=k){var n=new FileReader;n.onload=mxUtils.bind(this,function(a){if(null==m||m(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var n=a.target.result,q=n.indexOf(","),t=decodeURIComponent(escape(atob(n.substring(q+1)))),x=mxUtils.parseXml(t),t=x.getElementsByTagName("svg");if(0<t.length){var t=t[0],
-E=A?null:t.getAttribute("content");null!=E&&"<"!=E.charAt(0)&&"%"!=E.charAt(0)&&(E=unescape(window.atob?atob(E):Base64.decode(E,!0)));null!=E&&"%"==E.charAt(0)&&(E=decodeURIComponent(E));null==E||"<mxfile "!==E.substring(0,8)&&"<mxGraphModel "!==E.substring(0,14)?B(d,mxUtils.bind(this,function(){try{if(n.substring(0,q+1),null!=x){var a=x.getElementsByTagName("svg");if(0<a.length){var f=a[0],m=parseFloat(f.getAttribute("width")),t=parseFloat(f.getAttribute("height")),u=f.getAttribute("viewBox");if(null==
-u||0==u.length)f.setAttribute("viewBox","0 0 "+m+" "+t);else if(isNaN(m)||isNaN(t)){var r=u.split(" ");3<r.length&&(m=parseFloat(r[2]),t=parseFloat(r[3]))}n=this.createSvgDataUri(mxUtils.getXml(f));var E=Math.min(1,Math.min(e/Math.max(1,m)),e/Math.max(1,t)),B=g(n,k.type,b+d*p,c+d*p,Math.max(1,Math.round(m*E)),Math.max(1,Math.round(t*E)),k.name);if(isNaN(m)||isNaN(t)){var A=new Image;A.onload=mxUtils.bind(this,function(){m=Math.max(1,A.width);t=Math.max(1,A.height);B[0].geometry.width=m;B[0].geometry.height=
-t;f.setAttribute("viewBox","0 0 "+m+" "+t);n=this.createSvgDataUri(mxUtils.getXml(f));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));l.setCellStyles("image",n,[B[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(f))}return B}}}catch(ua){}return null})):B(d,mxUtils.bind(this,function(){return g(E,"text/xml",b+d*p,c+d*p,0,0,k.name)}))}else B(d,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==k.type){var C=A?null:this.extractGraphModelFromPng(a.target.result);
-if(null!=C&&0<C.length){var y=new Image;y.src=a.target.result;B(d,mxUtils.bind(this,function(){return g(C,"text/xml",b+d*p,c+d*p,y.width,y.height,k.name)}));t=!0}}t||(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(a.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,
-a.target.result,mxUtils.bind(this,function(l,n,m){B(d,mxUtils.bind(this,function(){if(null!=l&&l.length<r){var q=f&&this.isResampleImage(a.target.result,u)?Math.min(1,Math.min(e/n,e/m)):1;return g(l,k.type,b+d*p,c+d*p,Math.round(n*q),Math.round(m*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),f,e,u)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else g(a.target.result,k.type,b+d*p,c+d*p,240,160,k.name,
-function(a){B(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,b+d*p,c+d*p,240,160,k.name,function(a){B(d,function(){return a})},k):"image"==k.type.substring(0,5)?n.readAsDataURL(k):n.readAsText(k)}})(E)});l?this.confirmImageResize(function(a){f=a;x()},t):x()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},c=isLocalStorage||mxClient.IS_CHROMEAPP?
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,g,k,m,q,t,r,u,D){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;r=null!=r?r:this.maxImageBytes;var d=null!=b&&null!=c,f=!0,l=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=u||this.resampleThreshold,p=0;p<a.length;p++)if("image/"==a[p].type.substring(0,6)&&a[p].size>n){l=!0;break}var A=mxUtils.bind(this,function(){var l=this.editor.graph,n=l.gridSize;
+g=null!=g?g:mxUtils.bind(this,function(a,b,c,e,f,g,l,k,n){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,e,f,g,l,k,n,d,D)});k=null!=k?k:mxUtils.bind(this,function(a){l.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=a.length,t=p,A=[],y=mxUtils.bind(this,function(a,b){A[a]=b;if(0==--t){this.spinner.stop();if(null!=q)q(A);else{var d=[];l.getModel().beginUpdate();
+try{for(var c=0;c<A.length;c++){var e=A[c]();null!=e&&(d=d.concat(e))}}finally{l.getModel().endUpdate()}}k(d)}}),F=0;F<p;F++)mxUtils.bind(this,function(d){var k=a[d];if(null!=k){var p=new FileReader;p.onload=mxUtils.bind(this,function(a){if(null==m||m(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var p=a.target.result,q=p.indexOf(","),t=decodeURIComponent(escape(atob(p.substring(q+1)))),A=mxUtils.parseXml(t),t=A.getElementsByTagName("svg");if(0<t.length){var t=t[0],
+F=D?null:t.getAttribute("content");null!=F&&"<"!=F.charAt(0)&&"%"!=F.charAt(0)&&(F=unescape(window.atob?atob(F):Base64.decode(F,!0)));null!=F&&"%"==F.charAt(0)&&(F=decodeURIComponent(F));null==F||"<mxfile "!==F.substring(0,8)&&"<mxGraphModel "!==F.substring(0,14)?y(d,mxUtils.bind(this,function(){try{if(p.substring(0,q+1),null!=A){var a=A.getElementsByTagName("svg");if(0<a.length){var f=a[0],m=parseFloat(f.getAttribute("width")),t=parseFloat(f.getAttribute("height")),u=f.getAttribute("viewBox");if(null==
+u||0==u.length)f.setAttribute("viewBox","0 0 "+m+" "+t);else if(isNaN(m)||isNaN(t)){var r=u.split(" ");3<r.length&&(m=parseFloat(r[2]),t=parseFloat(r[3]))}p=this.createSvgDataUri(mxUtils.getXml(f));var F=Math.min(1,Math.min(e/Math.max(1,m)),e/Math.max(1,t)),y=g(p,k.type,b+d*n,c+d*n,Math.max(1,Math.round(m*F)),Math.max(1,Math.round(t*F)),k.name);if(isNaN(m)||isNaN(t)){var x=new Image;x.onload=mxUtils.bind(this,function(){m=Math.max(1,x.width);t=Math.max(1,x.height);y[0].geometry.width=m;y[0].geometry.height=
+t;f.setAttribute("viewBox","0 0 "+m+" "+t);p=this.createSvgDataUri(mxUtils.getXml(f));var a=p.indexOf(";");0<a&&(p=p.substring(0,a)+p.substring(p.indexOf(",",a+1)));l.setCellStyles("image",p,[y[0]])});x.src=this.createSvgDataUri(mxUtils.getXml(f))}return y}}}catch(ua){}return null})):y(d,mxUtils.bind(this,function(){return g(F,"text/xml",b+d*n,c+d*n,0,0,k.name)}))}else y(d,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==k.type){var x=D?null:this.extractGraphModelFromPng(a.target.result);
+if(null!=x&&0<x.length){var C=new Image;C.src=a.target.result;y(d,mxUtils.bind(this,function(){return g(x,"text/xml",b+d*n,c+d*n,C.width,C.height,k.name)}));t=!0}}t||(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(a.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,
+a.target.result,mxUtils.bind(this,function(l,m,p){y(d,mxUtils.bind(this,function(){if(null!=l&&l.length<r){var q=f&&this.isResampleImage(a.target.result,u)?Math.min(1,Math.min(e/m,e/p)):1;return g(l,k.type,b+d*n,c+d*n,Math.round(m*q),Math.round(p*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),f,e,u)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else g(a.target.result,k.type,b+d*n,c+d*n,240,160,k.name,
+function(a){y(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,b+d*n,c+d*n,240,160,k.name,function(a){y(d,function(){return a})},k):"image"==k.type.substring(0,5)?p.readAsDataURL(k):p.readAsText(k)}})(F)});l?this.confirmImageResize(function(a){f=a;A()},t):A()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},c=isLocalStorage||mxClient.IS_CHROMEAPP?
 mxSettings.getResizeImages():null,e=function(c,e){if(c||b)mxSettings.setResizeImages(c?e:null),mxSettings.save();d();a(e)};null==c||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){e(a,!0)},function(a){e(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||
 mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,c)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var e=new XMLHttpRequest;e.open("POST",OPEN_URL);e.onreadystatechange=function(){b(e)};e.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,e,g,k){g=null!=g?g:this.maxImageSize;var d=Math.max(1,a.width),f=Math.max(1,a.height);
-if(e&&this.isResampleImage(b,k))try{var l=Math.max(d/g,f/g);if(1<l){var p=Math.round(d/l),n=Math.round(f/l),m=document.createElement("canvas");m.width=p;m.height=n;m.getContext("2d").drawImage(a,0,0,p,n);var q=m.toDataURL();if(q.length<b.length){var r=document.createElement("canvas");r.width=p;r.height=n;var v=r.toDataURL();q!==v&&(b=q,d=p,f=n)}}}catch(N){}c(b,d,f)};EditorUi.prototype.crcTable=[];for(var c=0;256>c;c++)for(var k=c,m=0;8>m;m++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[c]=
+if(e&&this.isResampleImage(b,k))try{var l=Math.max(d/g,f/g);if(1<l){var n=Math.round(d/l),m=Math.round(f/l),p=document.createElement("canvas");p.width=n;p.height=m;p.getContext("2d").drawImage(a,0,0,n,m);var q=p.toDataURL();if(q.length<b.length){var r=document.createElement("canvas");r.width=n;r.height=m;var v=r.toDataURL();q!==v&&(b=q,d=n,f=m)}}}catch(N){}c(b,d,f)};EditorUi.prototype.crcTable=[];for(var c=0;256>c;c++)for(var k=c,m=0;8>m;m++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[c]=
 k;EditorUi.prototype.updateCRC=function(a,b,c,e){for(var d=0;d<e;d++)a=EditorUi.prototype.crcTable[(a^b[c+d])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,d=0;d<a.length;d++)b=b>>>8^this.crcTable[(b^a.charCodeAt(d))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,e,g){function d(a,b){var d=k;k+=b;return a.substring(d,k)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<
-16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=g&&g();else if(d(a,4),"IHDR"!=d(a,4))null!=g&&g();else{d(a,17);g=a.substring(0,k);do{var n=f(a);if("IDAT"==d(a,4)){g=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+e;e=4294967295;e=this.updateCRC(e,
-b,0,4);e=this.updateCRC(e,c,0,c.length);g+=l(c.length)+b+c+l(e^4294967295);g+=a.substring(k-8,a.length);break}g+=a.substring(k-8,k-4+n);d(a,n);d(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(g):Base64.encode(g,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var d=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(d):Base64.decode(d,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,d,e){a=c.substring(a+8,a+8+e);"zTXt"==d?(e=a.indexOf(String.fromCharCode(0)),
+16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=g&&g();else if(d(a,4),"IHDR"!=d(a,4))null!=g&&g();else{d(a,17);g=a.substring(0,k);do{var m=f(a);if("IDAT"==d(a,4)){g=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+e;e=4294967295;e=this.updateCRC(e,
+b,0,4);e=this.updateCRC(e,c,0,c.length);g+=l(c.length)+b+c+l(e^4294967295);g+=a.substring(k-8,a.length);break}g+=a.substring(k-8,k-4+m);d(a,m);d(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(g):Base64.encode(g,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var d=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(d):Base64.decode(d,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,d,e){a=c.substring(a+8,a+8+e);"zTXt"==d?(e=a.indexOf(String.fromCharCode(0)),
 "mxGraphModel"==a.substring(0,e)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(e+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==d&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==d)return!0}))}catch(g){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror=
 c);d.src=a};var q=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var d=!1;try{a.handleCustomLink(b),d=!0}catch(C){a.handleError(C)}return d};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this,
 arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var e=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var d=0;d<a.pages.length;d++)if(a.pages[d]==a.currentPage){0<d&&(b+=(0<b.length?"&":"?")+"page="+d);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return e.apply(this,arguments)};
 var g=b.addClickHandler;b.addClickHandler=function(a,d,c){var e=d;d=function(a,d){if(null==d){var c=mxEvent.getSource(a);"a"==c.nodeName.toLowerCase()&&(d=c.getAttribute("href"))}null!=d&&b.isCustomLink(d)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(d)&&mxEvent.consume(a);null!=e&&e(a,d)};g.call(this,a,d,c)};q.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,
 360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var k=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:k.apply(this,arguments)};var m=b.labelLinkClicked;b.labelLinkClicked=function(a,d,c){var e=d.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(c)&&mxEvent.isPopupTrigger(c))m.apply(this,
-arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(c)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,d=a.getCurrentFile();null!=d&&(b=null!=d.getTitle()?d.getTitle():b);return b};var r=this.actions.get("print");r.setEnabled(!mxClient.IS_IOS||!navigator.standalone);r.visible=r.isEnabled();if(!this.editor.chromeless||this.editor.editable){var t=function(){window.setTimeout(function(){y.innerHTML="&nbsp;";
-y.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");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);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE||
+arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(c)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,d=a.getCurrentFile();null!=d&&(b=null!=d.getTitle()?d.getTitle():b);return b};var r=this.actions.get("print");r.setEnabled(!mxClient.IS_IOS||!navigator.standalone);r.visible=r.isEnabled();if(!this.editor.chromeless||this.editor.editable){var t=function(){window.setTimeout(function(){x.innerHTML="&nbsp;";
+x.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");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);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE||
 b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var d=a.clipboardData||a.originalEvent.clipboardData,c=!1,e=0;e<d.types.length;e++)if("text/"===d.types[e].substring(0,5)){c=!0;break}if(!c){var f=d.items;for(index in f){var g=f[index];if("file"===g.kind){if(b.isEditing())this.importFiles([g.getAsFile()],0,0,this.maxImageSize,function(a,d,c,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0,
-6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(J){}}),!1);var y=document.createElement("div");y.style.position="absolute";y.style.whiteSpace="nowrap";y.style.overflow="hidden";y.style.display="block";y.contentEditable=!0;mxUtils.setOpacity(y,0);y.style.width="1px";y.style.height="1px";y.innerHTML="&nbsp;";var u=!1;this.keyHandler.bindControlKey(88,null);
-this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var d=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(y.style.left=b.container.scrollLeft+10+"px",y.style.top=b.container.scrollTop+10+"px",b.container.appendChild(y),
-u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){y.focus();document.execCommand("selectAll",!1,null)},0):(y.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var d=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=d&&17!=d&&91!=d||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),y.parentNode.removeChild(y),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(y,
-"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(y),t())}));mxEvent.addListener(y,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(y,!0),t())}));mxEvent.addListener(y,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(y.innerHTML="&nbsp;",y.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,y);y.innerHTML="&nbsp;"}),0))}),!0);var A=this.isSelectionAllowed;this.isSelectionAllowed=
-function(a){return mxEvent.getSource(a)==y?!0:A.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,d=b.cellEditor.text2,c=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()}),
+6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(J){}}),!1);var x=document.createElement("div");x.style.position="absolute";x.style.whiteSpace="nowrap";x.style.overflow="hidden";x.style.display="block";x.contentEditable=!0;mxUtils.setOpacity(x,0);x.style.width="1px";x.style.height="1px";x.innerHTML="&nbsp;";var u=!1;this.keyHandler.bindControlKey(88,null);
+this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var d=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(x.style.left=b.container.scrollLeft+10+"px",x.style.top=b.container.scrollTop+10+"px",b.container.appendChild(x),
+u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){x.focus();document.execCommand("selectAll",!1,null)},0):(x.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var d=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=d&&17!=d&&91!=d||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),x.parentNode.removeChild(x),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(x,
+"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(x),t())}));mxEvent.addListener(x,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(x,!0),t())}));mxEvent.addListener(x,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(x.innerHTML="&nbsp;",x.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,x);x.innerHTML="&nbsp;"}),0))}),!0);var D=this.isSelectionAllowed;this.isSelectionAllowed=
+function(a){return mxEvent.getSource(a)==x?!0:D.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,d=b.cellEditor.text2,c=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()}),
 mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=this.highlightElement(d));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,d,c,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=
 0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var d=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,c)),e/Math.max(1,a));b.insertImage(decodeURIComponent(d),c*e,a*e)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<=
 mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){r=document.createElement("div");r.style.position="absolute";r.style.top="95px";r.style.left="250px";r.style.width="2000px";r.style.height="30px";r.style.background=
-"whiteSmoke";document.body.appendChild(r);var D=document.createElement("div");D.style.position="absolute";D.style.top="125px";D.style.left="220px";D.style.width="30px";D.style.height="1000px";D.style.background="whiteSmoke";document.body.appendChild(D);var v=document.createElement("div");v.style.position="absolute";v.style.top="95px";v.style.left="220px";v.style.width="30px";v.style.height="30px";v.style.background="whiteSmoke";document.body.appendChild(v);this.vRuler=new mxRuler(this.editor.graph,
-D,!0);this.hRuler=new mxRuler(this.editor.graph,r,!1)}if("1"==urlParams.styledev){r=document.getElementById("geFooter");null!=r&&(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,
+"whiteSmoke";document.body.appendChild(r);var B=document.createElement("div");B.style.position="absolute";B.style.top="125px";B.style.left="220px";B.style.width="30px";B.style.height="1000px";B.style.background="whiteSmoke";document.body.appendChild(B);var v=document.createElement("div");v.style.position="absolute";v.style.top="95px";v.style.left="220px";v.style.width="30px";v.style.height="30px";v.style.background="whiteSmoke";document.body.appendChild(v);this.vRuler=new mxRuler(this.editor.graph,
+B,!0);this.hRuler=new mxRuler(this.editor.graph,r,!1)}if("1"==urlParams.styledev){r=document.getElementById("geFooter");null!=r&&(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)})),r.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var d=this.editor.graph.getSelectionCell(),d=this.editor.graph.getModel().getStyle(d);this.styleInput.value=d||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var z=this.isSelectionAllowed;
 this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:z.apply(this,arguments)}}r=document.getElementById("geInfo");null!=r&&r.parentNode.removeChild(r);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var N=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=N&&(N.parentNode.removeChild(N),N=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==
 N&&(!mxClient.IS_IE||10<document.documentMode)&&(N=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=N&&(N.parentNode.removeChild(N),N=null);if(b.isEnabled()){var d=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),c=b.view.translate,e=b.view.scale,f=d.x/e-c.x,g=d.y/e-c.y;mxEvent.isAltDown(a)&&(g=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,
-f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=d)b.setSelectionCells(this.importXml(d,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=k;var p=null,c=d.getElementsByTagName("img");
-null!=c&&1==c.length?(k=c[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(p=!0)):(d=d.getElementsByTagName("a"),null!=d&&1==d.length&&(k=d[0].getAttribute("href")));var n=!0,m=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,g,!0,p,null,n))});p&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;m()},mxEvent.isControlDown(a)):m()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,
+f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=d)b.setSelectionCells(this.importXml(d,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=k;var n=null,c=d.getElementsByTagName("img");
+null!=c&&1==c.length?(k=c[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(n=!0)):(d=d.getElementsByTagName("a"),null!=d&&1==d.length&&(k=d[0].getAttribute("href")));var m=!0,p=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,g,!0,n,null,m))});n&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){m=a;p()},mxEvent.isControlDown(a)):p()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,
 function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var c=this.maxImageSize,c=Math.min(1,Math.min(c/Math.max(1,d)),c/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,d*c,a*c,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(l,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),
 f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var d=b.getProperty("edit");null!=d&&this.updateEditReferences(d)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,
 arguments);if("data:page/id,"==a.substring(0,13)){var d=a.indexOf(",");0<d&&(b=this.getPageById(a.substring(d+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)};
@@ -3126,8 +3131,8 @@ k.style.top=b+"px";k.style.left=d+"px";k.style.width=Math.max(0,c-3)+"px";k.styl
 d))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var d=0;d<a.length;d++)mxUtils.bind(this,function(a){var d=new FileReader;d.onload=mxUtils.bind(this,function(d){try{var c=d.target.result,e=a.name;if(null!=e&&0<e.length){!this.useCanvasForExport&&/(\.png)$/i.test(e)&&(e=e.substring(0,e.length-4)+".xml");var f=mxUtils.bind(this,function(a){e=0<=e.lastIndexOf(".")?e.substring(0,e.lastIndexOf("."))+".xml":e+".xml";if("<mxlibrary"==
 a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(u){this.handleError(u,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}));else if(/(\.*<graphml )/.test(c))this.importGraphML(c,mxUtils.bind(this,function(a){this.spinner.stop();
 f(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,e))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?f(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(c))/(\.json)$/i.test(e)&&(e=e.substring(0,e.length-5)+".xml"),this.convertLucidChart(c,
-mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==d.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,d.target.result,a.name))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0,
-9)&&(c=this.extractGraphModelFromPng(c)),this.spinner.stop(),this.openLocalFile(c,e,b)}}catch(y){this.handleError(y)}});d.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?d.readAsDataURL(a):d.readAsText(a)})(a[d])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&&
+mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==d.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,d.target.result,a.name))}catch(x){this.handleError(x,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0,
+9)&&(c=this.extractGraphModelFromPng(c)),this.spinner.stop(),this.openLocalFile(c,e,b)}}catch(x){this.handleError(x)}});d.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?d.readAsDataURL(a):d.readAsText(a)})(a[d])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&&
 this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=
 new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root,
 a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function d(a){if(null!=a){var d=a.lastIndexOf(".");0<d&&(a=a.substring(d+1,a.length));null==b[a]&&(b[a]=!0)}}var c=this.editor.graph,e=c.getCellStyle(a);d(mxStencilRegistry.getBasenameForStencil(e[mxConstants.STYLE_SHAPE]));c.model.isEdge(a)&&(d(mxMarker.getPackageForType(e[mxConstants.STYLE_STARTARROW])),d(mxMarker.getPackageForType(e[mxConstants.STYLE_ENDARROW])));
@@ -3142,31 +3147,31 @@ mxResources.get(g.okKey):null,function(a){null!=a&&m.postMessage(JSON.stringify(
 mxUtils.bind(this,function(){this.hideDialog();m.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();m.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),"*")}):null);this.showDialog(k.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{k.init()}catch(O){m.postMessage(JSON.stringify({event:"draft",
 error:O.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();k=1==g.enableRecent;l=1==g.enableSearch;k=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,d){b=b||this.emptyDiagramXml;null!=g.callback?m.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:d}),"*"):(a(b,f,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,k?mxUtils.bind(this,function(a){this.recentReadyCallback=
 a;m.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,l?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;m.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,d){m.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:d}),"*")});this.showDialog(k.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));k.init();return}if("searchDocsList"==g.action)this.searchReadyCallback(g.list,g.errorMsg);else if("recentDocsList"==
-g.action)this.recentReadyCallback(g.list,g.errorMsg);else{if("textContent"==g.action){this.editor.graph.setEnabled(!1);var p=this.editor.graph,k="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var n=p;this.currentPage!=this.pages[l]&&(n=this.createTemporaryGraph(p.getStylesheet()),n.model.setRoot(this.pages[l].root));k+=this.pages[l].getName()+" "+n.getIndexableText()+" "}else k=p.getIndexableText();this.editor.graph.setEnabled(!0);m.postMessage(JSON.stringify({event:"textContent",data:k,
-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 q=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,q):this.spinner.stop();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 r=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var p=this.editor.graph,x=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(r);m.postMessage(JSON.stringify(b),"*")}),B=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);
-"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(r))));p!=this.editor.graph&&p.container.parentNode.removeChild(p.container);x(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var p=this.createTemporaryGraph(p.getStylesheet()),E=p.getGlobalVariable,C=this.pages[0];p.getGlobalVariable=function(a){return"page"==a?C.getName():"pagenumber"==a?1:E.apply(this,arguments)};document.body.appendChild(p.container);
-p.model.setRoot(C.root)}this.exportToCanvas(mxUtils.bind(this,function(a){B(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){B(null)}),null,null,null,null,null,null,p)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(r)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?x("data:image/png;base64,"+a.getText()):B(null)}),mxUtils.bind(this,function(){B(null)}))}}else{null!=
-g.xml&&0<g.xml.length&&this.setFileData(g.xml);q=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),q.xml=mxUtils.getXml(k),q.data=this.getFileData(null,null,!0,null,null,null,k),q.format=g.format;else if("html"==g.format)r=this.editor.getGraphXml(),q.data=this.getHtml(r,this.editor.graph),q.xml=mxUtils.getXml(r),q.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background;
-k==mxConstants.NONE&&(k=null);q.xml=this.getFileData(!0);q.format="svg";if(g.embedImages||null==g.embedImages){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),"xmlsvg"==g.format?this.getEmbeddedSvg(q.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(a);m.postMessage(JSON.stringify(q),"*")})):this.convertImages(this.editor.graph.getSvg(k),
-mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(mxUtils.getXml(a));m.postMessage(JSON.stringify(q),"*")}));return}k="xmlsvg"==g.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));q.data=this.createSvgDataUri(k)}m.postMessage(JSON.stringify(q),"*")}return}if("load"==g.action)c=1==g.autosave,this.hideDialog(),null!=g.modified&&null==urlParams.modified&&(urlParams.modified=
+g.action)this.recentReadyCallback(g.list,g.errorMsg);else{if("textContent"==g.action){this.editor.graph.setEnabled(!1);var n=this.editor.graph,k="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var q=n;this.currentPage!=this.pages[l]&&(q=this.createTemporaryGraph(n.getStylesheet()),q.model.setRoot(this.pages[l].root));k+=this.pages[l].getName()+" "+q.getIndexableText()+" "}else k=n.getIndexableText();this.editor.graph.setEnabled(!0);m.postMessage(JSON.stringify({event:"textContent",data:k,
+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 p=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,p):this.spinner.stop();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 r=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var n=this.editor.graph,v=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(r);m.postMessage(JSON.stringify(b),"*")}),A=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);
+"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(r))));n!=this.editor.graph&&n.container.parentNode.removeChild(n.container);v(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var n=this.createTemporaryGraph(n.getStylesheet()),F=n.getGlobalVariable,C=this.pages[0];n.getGlobalVariable=function(a){return"page"==a?C.getName():"pagenumber"==a?1:F.apply(this,arguments)};document.body.appendChild(n.container);
+n.model.setRoot(C.root)}this.exportToCanvas(mxUtils.bind(this,function(a){A(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){A(null)}),null,null,null,null,null,null,n)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(r)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?v("data:image/png;base64,"+a.getText()):A(null)}),mxUtils.bind(this,function(){A(null)}))}}else{null!=
+g.xml&&0<g.xml.length&&this.setFileData(g.xml);p=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),p.xml=mxUtils.getXml(k),p.data=this.getFileData(null,null,!0,null,null,null,k),p.format=g.format;else if("html"==g.format)r=this.editor.getGraphXml(),p.data=this.getHtml(r,this.editor.graph),p.xml=mxUtils.getXml(r),p.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background;
+k==mxConstants.NONE&&(k=null);p.xml=this.getFileData(!0);p.format="svg";if(g.embedImages||null==g.embedImages){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),"xmlsvg"==g.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);m.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(k),
+mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));m.postMessage(JSON.stringify(p),"*")}));return}k="xmlsvg"==g.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));p.data=this.createSvgDataUri(k)}m.postMessage(JSON.stringify(p),"*")}return}if("load"==g.action)c=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.title&&null!=this.buttonContainer&&(l=document.createElement("span"),mxUtils.write(l,g.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),
-this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),g=null!=g.xmlpng?this.extractGraphModelFromPng(g.xmlpng):g.xml;else{m.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}}var v=mxUtils.bind(this,function(f,g){d=!0;try{a(f,g)}catch(W){this.handleError(W)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())});
+this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),g=null!=g.xmlpng?this.extractGraphModelFromPng(g.xmlpng):g.xml;else{m.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}}var y=mxUtils.bind(this,function(f,g){d=!0;try{a(f,g)}catch(W){this.handleError(W)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())});
 e=k();c&&null==b&&(b=mxUtils.bind(this,function(a,b){var c=k();if(c!=e&&!d){var f=this.createLoadMessage("autosave");f.xml=c;c=JSON.stringify(f);(window.opener||window.parent).postMessage(c,"*")}e=c}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged",
 b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||m.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=g&&"function"===typeof g.substring&&"data:application/vnd.visio;base64,"==g.substring(0,34)?(k="0M8R4KGxGuE"==g.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(g.substring(g.indexOf(",")+
-1)),function(a){v(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=g&&"function"===typeof g.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,"")?this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&v(a.responseText,f)}),""):null!=g&&"function"===typeof g.substring&&this.isLucidChartData(g)?this.convertLucidChart(g,
-mxUtils.bind(this,function(a){v(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(g=k(g),v(g,f))}}));var m=window.opener||window.parent,k="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";m.postMessage(k,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom=
+1)),function(a){y(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=g&&"function"===typeof g.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,"")?this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&y(a.responseText,f)}),""):null!=g&&"function"===typeof g.substring&&this.isLucidChartData(g)?this.convertLucidChart(g,
+mxUtils.bind(this,function(a){y(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(g=k(g),y(g,f))}}));var m=window.opener||window.parent,k="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";m.postMessage(k,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom=
 "2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="geBigButton";b.style.fontSize="12px";b.style.padding="4px 6px 4px 6px";b.style.borderRadius="3px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",
 mxResources.get("saveAndExit")),b.style.fontSize="12px",b.style.marginLeft="6px",b.style.padding="4px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.style.fontSize="12px";b.style.marginLeft="6px";b.style.marginRight="20px";b.style.padding="4px";b.style.cursor="pointer";mxEvent.addListener(b,
 "click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import")));this.showDialog(this.importCsvDialog.container,
-640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var d=a.split("\n"),c=[];if(0<d.length){var e={},f=null,k=null,m=null,q=null,r="",u="auto",A="auto",v=null,z=null,S=40,N=40,K=100,E=0,C=this.editor.graph;C.getGraphBounds();for(var M=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},O=C.getFreeInsertPoint(),V=O.x,T=O.y,O=T,W=null,J="auto",q=null,X=[],la=null,fa=null,Y=0;Y<d.length&&"#"==d[Y].charAt(0);){a=d[Y];for(Y++;Y<
-d.length&&"\\"==a.charAt(a.length-1)&&"#"==d[Y].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(d[Y].substring(1)),Y++;if("#"!=a.charAt(1)){var ca=a.indexOf(":");if(0<ca){var H=mxUtils.trim(a.substring(1,ca)),I=mxUtils.trim(a.substring(ca+1));"label"==H?W=C.sanitizeHtml(I):"style"==H?f=I:"parentstyle"==H?k=I:"identity"==H&&0<I.length&&"-"!=I?m=I:"parent"==H&&0<I.length&&"-"!=I?q=I:"namespace"==H&&0<I.length&&"-"!=I?r=I:"width"==H?u=I:"height"==H?A=I:"left"==H&&0<I.length?v=I:"top"==H&&0<I.length?
-z=I:"ignore"==H?fa=I.split(","):"connect"==H?X.push(JSON.parse(I)):"link"==H?la=I:"padding"==H?E=parseFloat(I):"edgespacing"==H?S=parseFloat(I):"nodespacing"==H?N=parseFloat(I):"levelspacing"==H?K=parseFloat(I):"layout"==H&&(J=I)}}}var aa=this.editor.csvToArray(d[Y]),H=ca=null;if(null!=m||null!=q)for(var L=0;L<aa.length;L++)m==aa[L]&&(ca=L),q==aa[L]&&(H=L);null==W&&(W="%"+aa[0]+"%");if(null!=X)for(var P=0;P<X.length;P++)null==e[X[P].to]&&(e[X[P].to]={});C.model.beginUpdate();try{for(L=Y+1;L<d.length;L++){var da=
+640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var d=a.split("\n"),c=[];if(0<d.length){var e={},f=null,k=null,m=null,q=null,r="",u="auto",v="auto",B=null,z=null,S=40,N=40,K=100,F=0,C=this.editor.graph;C.getGraphBounds();for(var M=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},O=C.getFreeInsertPoint(),V=O.x,T=O.y,O=T,W=null,J="auto",q=null,X=[],la=null,fa=null,Y=0;Y<d.length&&"#"==d[Y].charAt(0);){a=d[Y];for(Y++;Y<
+d.length&&"\\"==a.charAt(a.length-1)&&"#"==d[Y].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(d[Y].substring(1)),Y++;if("#"!=a.charAt(1)){var ca=a.indexOf(":");if(0<ca){var H=mxUtils.trim(a.substring(1,ca)),I=mxUtils.trim(a.substring(ca+1));"label"==H?W=C.sanitizeHtml(I):"style"==H?f=I:"parentstyle"==H?k=I:"identity"==H&&0<I.length&&"-"!=I?m=I:"parent"==H&&0<I.length&&"-"!=I?q=I:"namespace"==H&&0<I.length&&"-"!=I?r=I:"width"==H?u=I:"height"==H?v=I:"left"==H&&0<I.length?B=I:"top"==H&&0<I.length?
+z=I:"ignore"==H?fa=I.split(","):"connect"==H?X.push(JSON.parse(I)):"link"==H?la=I:"padding"==H?F=parseFloat(I):"edgespacing"==H?S=parseFloat(I):"nodespacing"==H?N=parseFloat(I):"levelspacing"==H?K=parseFloat(I):"layout"==H&&(J=I)}}}var aa=this.editor.csvToArray(d[Y]),H=ca=null;if(null!=m||null!=q)for(var L=0;L<aa.length;L++)m==aa[L]&&(ca=L),q==aa[L]&&(H=L);null==W&&(W="%"+aa[0]+"%");if(null!=X)for(var P=0;P<X.length;P++)null==e[X[P].to]&&(e[X[P].to]={});C.model.beginUpdate();try{for(L=Y+1;L<d.length;L++){var da=
 this.editor.csvToArray(d[L]);if(null==da){var Z=40<d[L].length?d[L].substring(0,40)+"...":d[L];throw Error(L+" ("+Z+") "+mxResources.get("containsValidationErrors"));}if(da.length==aa.length){var G=null,ja=null!=ca?r+da[ca]:null;null!=ja&&(G=C.model.getCell(ja));null==G&&(G=new mxCell(W,new mxGeometry(V,O,0,0),f||"whiteSpace=wrap;html=1;"),G.vertex=!0,G.id=ja);for(var Q=0;Q<da.length;Q++)C.setAttributeForCell(G,aa[Q],da[Q]);C.setAttributeForCell(G,"placeholders","1");G.style=C.replacePlaceholders(G,
-G.style);for(P=0;P<X.length;P++)e[X[P].to][G.getAttribute(X[P].to)]=G;null!=la&&"link"!=la&&(C.setLinkForCell(G,G.getAttribute(la)),C.setAttributeForCell(G,la,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[G]));var ha=this.editor.graph.getPreferredSizeForCell(G);G.vertex&&(null!=v&&null!=G.getAttribute(v)&&(G.geometry.x=V+parseFloat(G.getAttribute(v))),null!=z&&null!=G.getAttribute(z)&&(G.geometry.y=T+parseFloat(G.getAttribute(z))),"@"==u.charAt(0)&&null!=G.getAttribute(u.substring(1))?
-G.geometry.width=parseFloat(G.getAttribute(u.substring(1))):G.geometry.width="auto"==u?ha.width+E:parseFloat(u),"@"==A.charAt(0)&&null!=G.getAttribute(A.substring(1))?G.geometry.height=parseFloat(G.getAttribute(A.substring(1))):G.geometry.height="auto"==A?ha.height+E:parseFloat(A),O+=G.geometry.height+N);q=null!=H?C.model.getCell(r+da[H]):null;null!=q?(q.style=C.replacePlaceholders(q,k),C.addCell(G,q)):c.push(C.addCell(G))}}for(var ka=c.slice(),ga=c.slice(),P=0;P<X.length;P++)for(var ba=X[P],L=0;L<
+G.style);for(P=0;P<X.length;P++)e[X[P].to][G.getAttribute(X[P].to)]=G;null!=la&&"link"!=la&&(C.setLinkForCell(G,G.getAttribute(la)),C.setAttributeForCell(G,la,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[G]));var ha=this.editor.graph.getPreferredSizeForCell(G);G.vertex&&(null!=B&&null!=G.getAttribute(B)&&(G.geometry.x=V+parseFloat(G.getAttribute(B))),null!=z&&null!=G.getAttribute(z)&&(G.geometry.y=T+parseFloat(G.getAttribute(z))),"@"==u.charAt(0)&&null!=G.getAttribute(u.substring(1))?
+G.geometry.width=parseFloat(G.getAttribute(u.substring(1))):G.geometry.width="auto"==u?ha.width+F:parseFloat(u),"@"==v.charAt(0)&&null!=G.getAttribute(v.substring(1))?G.geometry.height=parseFloat(G.getAttribute(v.substring(1))):G.geometry.height="auto"==v?ha.height+F:parseFloat(v),O+=G.geometry.height+N);q=null!=H?C.model.getCell(r+da[H]):null;null!=q?(q.style=C.replacePlaceholders(q,k),C.addCell(G,q)):c.push(C.addCell(G))}}for(var ka=c.slice(),ga=c.slice(),P=0;P<X.length;P++)for(var ba=X[P],L=0;L<
 c.length;L++){var G=c[L],wa=G.getAttribute(ba.from);if(null!=wa){C.setAttributeForCell(G,ba.from,null);for(var ua=wa.split(","),Q=0;Q<ua.length;Q++){var pa=e[ba.to][ua[Q]];null!=pa&&(W=ba.label,null!=ba.fromlabel&&(W=(G.getAttribute(ba.fromlabel)||"")+(W||"")),null!=ba.tolabel&&(W=(W||"")+(pa.getAttribute(ba.tolabel)||"")),ga.push(C.insertEdge(null,null,W||"",ba.invert?pa:G,ba.invert?G:pa,ba.style||C.createCurrentEdgeStyle())),mxUtils.remove(ba.invert?G:pa,ka))}}}if(null!=fa)for(L=0;L<c.length;L++)for(G=
-c[L],Q=0;Q<fa.length;Q++)C.setAttributeForCell(G,mxUtils.trim(fa[Q]),null);var ta=new mxParallelEdgeLayout(C);ta.spacing=S;var va=function(){ta.execute(C.getDefaultParent());for(var a=0;a<c.length;a++){var b=C.getCellGeometry(c[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==u&&(b.width=Math.round(C.snap(b.width)));"auto"==A&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==J){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var ra=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return ra.apply(this,
+c[L],Q=0;Q<fa.length;Q++)C.setAttributeForCell(G,mxUtils.trim(fa[Q]),null);var ta=new mxParallelEdgeLayout(C);ta.spacing=S;var va=function(){ta.execute(C.getDefaultParent());for(var a=0;a<c.length;a++){var b=C.getCellGeometry(c[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==u&&(b.width=Math.round(C.snap(b.width)));"auto"==v&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==J){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var ra=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return ra.apply(this,
 arguments)||0>mxUtils.indexOf(c,a)};this.executeLayout(function(){ma.execute(C.getDefaultParent());va()},!0,M);M=null}else if("horizontaltree"==J||"verticaltree"==J||"auto"==J&&ga.length==2*c.length-1&&1==ka.length){C.view.validate();var ia=new mxCompactTreeLayout(C,"horizontaltree"==J);ia.levelDistance=N;ia.edgeRouting=!1;ia.resetEdges=!1;this.executeLayout(function(){ia.execute(C.getDefaultParent(),0<ka.length?ka[0]:null)},!0,M);M=null}else if("horizontalflow"==J||"verticalflow"==J||"auto"==J&&
 1==ka.length){C.view.validate();var ea=new mxHierarchicalLayout(C,"horizontalflow"==J?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ea.intraCellSpacing=N;ea.parallelEdgeSpacing=S;ea.interRankCellSpacing=K;ea.disableEdgeStyle=!1;this.executeLayout(function(){ea.execute(C.getDefaultParent(),ga);C.moveCells(ga,V,T)},!0,M);M=null}else if("organic"==J||"auto"==J&&ga.length>c.length){C.view.validate();var sa=new mxFastOrganicLayout(C);sa.forceConstant=3*N;sa.resetEdges=!1;var xa=sa.isVertexIgnored;
 sa.isVertexIgnored=function(a){return xa.apply(this,arguments)||0>mxUtils.indexOf(c,a)};ta=new mxParallelEdgeLayout(C);ta.spacing=S;this.executeLayout(function(){sa.execute(C.getDefaultParent());va()},!0,M);M=null}this.hideDialog()}finally{C.model.endUpdate()}null!=M&&M()}}catch(na){this.handleError(na)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var d="?",c;for(c in urlParams)0>mxUtils.indexOf(a,c)&&
@@ -3188,7 +3193,7 @@ this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.
 this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").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!=c&&c.isRenamable()||"1"==urlParams.embed);
 this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var z=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),
 this.exportDialog=null);z.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,e,g,k){var d=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(d.getSvg(e,g,k)),"image/svg+xml");else{var f=a.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*g/d.view.scale),
-p=Math.floor(l.height*g/d.view.scale);f.length<=MAX_REQUEST_SIZE&&m*p<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+p+"&border="+k+"&xml="+encodeURIComponent(f))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var d=a.changes[b];if(null!=d&&
+n=Math.floor(l.height*g/d.view.scale);f.length<=MAX_REQUEST_SIZE&&m*n<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+n+"&border="+k+"&xml="+encodeURIComponent(f))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var d=a.changes[b];if(null!=d&&
 d.constructor==mxChildChange&&null!=d.child){var c=d.child;if(null!=c.source&&null!=c.source.id){var e=this.getFutureCellForEdit(d.model,a,c.source.id);e!=c.source&&(c.source=e)}null!=c.target&&null!=c.target.id&&(d=this.getFutureCellForEdit(d.model,a,c.target.id),d!=c.target&&(c.target=d))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var e=b.changes.length-1;0<=e;e--){var f=b.changes[e];if(f.constructor==mxChildChange&&null!=f.child&&f.child.id==c){a.contains(f.previous)&&
 (d=f.child);break}}return d}})();function DiagramPage(a){this.node=a;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(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)};
 function RenamePage(a,b,e){this.ui=a;this.page=b;this.previous=this.name=e}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(a,b,e){this.ui=a;this.oldIndex=b;this.newIndex=e}
@@ -3246,38 +3251,38 @@ mxResources.get("copyOf",[a.getName()]))}),c)})};(function(){var a=EditorUi.prot
 a)?c:void 0})),null!=c.relatedPage.root&&a.encodeCell(c.relatedPage.root,k));return k};a.beforeDecode=function(a,b,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(b.getAttribute("relatedPage"));if(null==k.relatedPage){var c=b.ownerDocument.createElement("diagram");c.setAttribute("id",b.getAttribute("relatedPage"));c.setAttribute("name",b.getAttribute("name"));k.relatedPage=new DiagramPage(c);c=b.getAttribute("viewState");null!=c&&(k.relatedPage.viewState=JSON.parse(c),b.removeAttribute("viewState"));
 b=b.cloneNode(!0);c=b.firstChild;if(null!=c)for(k.relatedPage.root=a.decodeCell(c,!1),k=c.nextSibling,c.parentNode.removeChild(c),c=k;null!=c;){k=c.nextSibling;if(c.nodeType==mxConstants.NODETYPE_ELEMENT){var e=c.getAttribute("id");null==a.lookup(e)&&a.decodeCell(c)}c.parentNode.removeChild(c);c=k}}return b};a.afterDecode=function(a,b,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]=
 "selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,c,e,r,v){c=null!=c?c:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var k=e.slice(),d=[],f=0;f<e.length;f++){var l=this.view.getState(e[f]),m=null!=l?l.style:this.getCellStyle(e[f]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(e[f],!0,mxUtils.bind(this,function(a,b){null!=b&&d.push(b);a!=e[f]&&d.push(a);return a==e[f]||!this.model.isCollapsed(a)})),
-this.model.setCollapsed(e[f],a))}for(f=0;f<d.length;f++)this.model.setVisible(d[f],!a);e=k;e=b.apply(this,arguments)}finally{this.model.endUpdate()}return e};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 b(a){return p.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=p.getParent(a),b=g.view.getState(a),g.view.getState(a),b="tree"==(null!=
-b?b.style:g.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=p.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function r(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==
+this.model.setCollapsed(e[f],a))}for(f=0;f<d.length;f++)this.model.setVisible(d[f],!a);e=k;e=b.apply(this,arguments)}finally{this.model.endUpdate()}return e};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 b(a){return n.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=n.getParent(a),b=g.view.getState(a),g.view.getState(a),b="tree"==(null!=
+b?b.style:g.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=n.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function r(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==
 a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function v(a,b){b=null!=b?b:!0;g.model.beginUpdate();try{var c=g.model.getParent(a),d=g.getIncomingEdges(a),e=g.cloneCells([d[0],a]);g.model.setTerminal(e[0],g.model.getTerminal(d[0],!0),!0);var f=r(a),k=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-
-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;g.view.currentRoot!=c&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);var l=g.view.getState(a),p=g.view.scale;if(null!=l){var m=mxRectangle.fromRectangle(l);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*p:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*p;var q=g.getOutgoingEdges(g.model.getTerminal(d[0],!0));if(null!=q){for(var n=f==mxConstants.DIRECTION_SOUTH||
-f==mxConstants.DIRECTION_NORTH,u=k=d=0;u<q.length;u++){var t=g.model.getTerminal(q[u],!1);if(f==r(t)){var A=g.view.getState(t);t!=a&&null!=A&&(n&&b!=A.getCenterX()<l.getCenterX()||!n&&b!=A.getCenterY()<l.getCenterY())&&mxUtils.intersects(m,A)&&(d=10+Math.max(d,(Math.min(m.x+m.width,A.x+A.width)-Math.max(m.x,A.x))/p),k=10+Math.max(k,(Math.min(m.y+m.height,A.y+A.height)-Math.max(m.y,A.y))/p))}}n?k=0:d=0;for(u=0;u<q.length;u++)if(t=g.model.getTerminal(q[u],!1),f==r(t)&&(A=g.view.getState(t),t!=a&&null!=
-A&&(n&&b!=A.getCenterX()<l.getCenterX()||!n&&b!=A.getCenterY()<l.getCenterY()))){var v=[];g.traverse(A.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});g.moveCells(v,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function z(a){g.model.beginUpdate();try{var b=r(a),d=g.getIncomingEdges(a),c=g.cloneCells([d[0],a]);g.model.setTerminal(d[0],c[1],!1);g.model.setTerminal(c[0],c[1],!0);g.model.setTerminal(c[0],a,!1);var e=g.model.getParent(a),f=e.geometry,k=[];g.view.currentRoot!=
-e&&(c[1].geometry.x-=f.x,c[1].geometry.y-=f.y);g.traverse(a,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});var l=a.geometry.width+40,m=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?l=0:b==mxConstants.DIRECTION_NORTH?(l=0,m=-40):b==mxConstants.DIRECTION_WEST?(l=-40,m=0):b==mxConstants.DIRECTION_EAST&&(m=0);g.moveCells(k,l,m);return g.addCells(c,e)}finally{g.model.endUpdate()}}function d(a){g.model.beginUpdate();try{var b=g.model.getParent(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],
-a]);g.model.setTerminal(d[0],a,!0);var c=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<c.length;k++){var l=g.model.getTerminal(c[k],!1);null!=l&&f.push(l)}var m=g.view.getBounds(f),p=r(a),q=g.view.translate,n=g.view.scale;p==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/n-q.x-e.x+10,d[1].geometry.y+=a.geometry.height-e.y+40):p==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=
-null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/n-q.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height-e.y+40):(d[1].geometry.x=p==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-e.x+40):d[1].geometry.x+(a.geometry.width-e.x+40),d[1].geometry.y=null==m?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(m.y+m.height)/n-q.y+-e.y+10);return g.addCells(d,b)}finally{g.model.endUpdate()}}function f(a,b,d){a=g.getOutgoingEdges(a);d=g.view.getState(d);var c=
-[];if(null!=d&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,d.x+d.width)>=Math.max(f.x,d.x)||b&&Math.min(f.y+f.height,d.y+d.height)>=Math.max(f.y,d.y))&&c.push(f)}c.sort(function(a,d){return b?a.x+a.width-d.x-d.width:a.y+a.height-d.y-d.height})}return c}function l(a,b){var d=r(a),c=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==c&&d!=b?n.actions.get("selectParent").funct():
-d==b?(c=g.getOutgoingEdges(a),null!=c&&0<c.length&&g.setSelectionCell(g.model.getTerminal(c[0],!1))):(d=g.getIncomingEdges(a),null!=d&&0<d.length&&(c=f(g.model.getTerminal(d[0],!0),c,a),d=g.view.getState(a),null!=d&&(d=mxUtils.indexOf(c,d),0<=d&&(d+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=c.length-1&&g.setSelectionCell(c[d].cell)))))}var n=this,g=n.editor.graph,p=g.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings");
-mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var B=n.menus.createPopupMenu;n.menus.createPopupMenu=function(a,d,c){B.apply(this,arguments);if(1==g.getSelectionCount()){d=g.getSelectionCell();var e=g.getOutgoingEdges(d);a.addSeparator();null!=e&&0<e.length&&(b(g.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,c),this.addMenuItems(a,["selectDescendants"],null,c));b(g.getSelectionCell())&&(a.addSeparator(),0<g.getIncomingEdges(d).length&&
-this.addMenuItems(a,["selectSiblings","selectParent"],null,c))}};n.actions.addAction("selectChildren",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getOutgoingEdges(a);if(null!=a){for(var b=[],d=0;d<a.length;d++)b.push(g.model.getTerminal(a[d],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+X");n.actions.addAction("selectSiblings",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);if(null!=a&&0<a.length&&
-(a=g.getOutgoingEdges(g.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],d=0;d<a.length;d++)b.push(g.model.getTerminal(a[d],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+S");n.actions.addAction("selectParent",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);null!=a&&0<a.length&&g.setSelectionCell(g.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");n.actions.addAction("selectDescendants",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=
-g.getSelectionCell(),b=[];g.traverse(a,!0,function(a,d){null!=d&&b.push(d);b.push(a);return!0});g.setSelectionCells(b)}},null,null,"Alt+Shift+D");var x=g.removeCells;g.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var k=a[f];p.isEdge(k)&&c(k)&&(e.push(k),k=p.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),k=g.getIncomingEdges(a[f]),
-a=a.concat(k)):e.push(a[f])}a=e;return x.apply(this,arguments)};n.hoverIcons.getStateAt=function(a,d,c){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,c))};var t=g.duplicateCells;g.duplicateCells=function(a,d){a=null!=a?a:this.getSelectionCells();for(var c=a.slice(0),e=0;e<c.length;e++){var f=g.view.getState(c[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=t.call(this,a,d);if(l.length==
-a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]);if(0==m.length&&0<k.length){var p=this.cloneCell(k[0]);this.addEdge(p,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var y=g.moveCells;g.moveCells=function(a,d,c,e,f,k,l){var m=null;this.model.beginUpdate();try{var p=f,q=this.view.getState(f),n=null!=q?q.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var u=
-0;u<a.length;u++)if(b(a[u])||g.model.isEdge(a[u])&&null==g.model.getTerminal(a[u],!0)){f=g.model.getParent(a[u]);break}if(null!=p&&f!=p&&null!=this.view.getState(a[0])){var r=g.getIncomingEdges(a[0]);if(0<r.length){var t=g.view.getState(g.model.getTerminal(r[0],!0));if(null!=t){var A=g.view.getState(p);null!=A&&(d=(A.getCenterX()-t.getCenterX())/g.view.scale,c=(A.getCenterY()-t.getCenterY())/g.view.scale)}}}}m=y.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.length)for(u=0;u<m.length;u++)if(this.model.isEdge(m[u]))b(p)&&
-0>mxUtils.indexOf(m,this.model.getTerminal(m[u],!0))&&this.model.setTerminal(m[u],p,!0);else if(b(a[u])&&(r=g.getIncomingEdges(a[u]),0<r.length))if(!e)b(p)&&0>mxUtils.indexOf(a,this.model.getTerminal(r[0],!0))&&this.model.setTerminal(r[0],p,!0);else if(0==g.getIncomingEdges(m[u]).length){q=p;if(null==q||q==g.model.getParent(a[u]))q=g.model.getTerminal(r[0],!0);e=this.cloneCell(r[0]);this.addEdge(e,g.getDefaultParent(),q,m[u])}}finally{this.model.endUpdate()}return m};if(null!=n.sidebar){var u=n.sidebar.dropAndConnect;
-n.sidebar.dropAndConnect=function(a,d,c,e){var f=g.model,k=null;f.beginUpdate();try{if(k=u.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var m=g.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var A={88:n.actions.get("selectChildren"),84:n.actions.get("selectSubtree"),80:n.actions.get("selectParent"),83:n.actions.get("selectSiblings")},D=
-n.onKeyDown;n.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&&b(g.getSelectionCell())&&1==g.getSelectionCount()){var c=null;0<g.getIncomingEdges(g.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?z(g.getSelectionCell()):d(g.getSelectionCell()):13==a.which&&(c=v(g.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&g.model.isEdge(c[0])?g.setSelectionCell(g.model.getTerminal(c[0],!1)):g.setSelectionCell(c[c.length-1]),null!=n.hoverIcons&&n.hoverIcons.update(g.view.getState(g.getSelectionCell())),
-g.startEditingAtCell(g.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var e=A[a.keyCode];null!=e&&(e.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(l(g.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(a))}}catch(O){console.log("error",O)}mxEvent.isConsumed(a)||D.apply(this,arguments)};var U=g.connectVertex;g.connectVertex=function(a,c,e,f,k,l){var m=g.getIncomingEdges(a);return b(a)&&0<m.length?(e=r(a),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,k=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(a):f==k?z(a):v(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):U.call(this,a,c,e,f,k,l)};g.getSubtree=function(a){var d=[a];b(a)&&
-!e(a)&&g.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var S=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){S.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width=
+10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;g.view.currentRoot!=c&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);var l=g.view.getState(a),m=g.view.scale;if(null!=l){var n=mxRectangle.fromRectangle(l);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*m:n.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*m;var q=g.getOutgoingEdges(g.model.getTerminal(d[0],!0));if(null!=q){for(var p=f==mxConstants.DIRECTION_SOUTH||
+f==mxConstants.DIRECTION_NORTH,u=k=d=0;u<q.length;u++){var t=g.model.getTerminal(q[u],!1);if(f==r(t)){var v=g.view.getState(t);t!=a&&null!=v&&(p&&b!=v.getCenterX()<l.getCenterX()||!p&&b!=v.getCenterY()<l.getCenterY())&&mxUtils.intersects(n,v)&&(d=10+Math.max(d,(Math.min(n.x+n.width,v.x+v.width)-Math.max(n.x,v.x))/m),k=10+Math.max(k,(Math.min(n.y+n.height,v.y+v.height)-Math.max(n.y,v.y))/m))}}p?k=0:d=0;for(u=0;u<q.length;u++)if(t=g.model.getTerminal(q[u],!1),f==r(t)&&(v=g.view.getState(t),t!=a&&null!=
+v&&(p&&b!=v.getCenterX()<l.getCenterX()||!p&&b!=v.getCenterY()<l.getCenterY()))){var B=[];g.traverse(v.cell,!0,function(a,b){null!=b&&B.push(b);B.push(a);return!0});g.moveCells(B,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function z(a){g.model.beginUpdate();try{var b=r(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],a]);g.model.setTerminal(c[0],d[1],!1);g.model.setTerminal(d[0],d[1],!0);g.model.setTerminal(d[0],a,!1);var e=g.model.getParent(a),f=e.geometry,k=[];g.view.currentRoot!=
+e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);g.traverse(a,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});var l=a.geometry.width+40,n=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?l=0:b==mxConstants.DIRECTION_NORTH?(l=0,n=-40):b==mxConstants.DIRECTION_WEST?(l=-40,n=0):b==mxConstants.DIRECTION_EAST&&(n=0);g.moveCells(k,l,n);return g.addCells(d,e)}finally{g.model.endUpdate()}}function d(a){g.model.beginUpdate();try{var b=g.model.getParent(a),d=g.getIncomingEdges(a),c=g.cloneCells([d[0],
+a]);g.model.setTerminal(c[0],a,!0);var d=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<d.length;k++){var l=g.model.getTerminal(d[k],!1);null!=l&&f.push(l)}var n=g.view.getBounds(f),m=r(a),q=g.view.translate,p=g.view.scale;m==mxConstants.DIRECTION_SOUTH?(c[1].geometry.x=null==n?a.geometry.x+(a.geometry.width-c[1].geometry.width)/2:(n.x+n.width)/p-q.x-e.x+10,c[1].geometry.y+=a.geometry.height-e.y+40):m==mxConstants.DIRECTION_NORTH?(c[1].geometry.x=
+null==n?a.geometry.x+(a.geometry.width-c[1].geometry.width)/2:(n.x+n.width)/p-q.x+-e.x+10,c[1].geometry.y-=c[1].geometry.height-e.y+40):(c[1].geometry.x=m==mxConstants.DIRECTION_WEST?c[1].geometry.x-(c[1].geometry.width-e.x+40):c[1].geometry.x+(a.geometry.width-e.x+40),c[1].geometry.y=null==n?a.geometry.y+(a.geometry.height-c[1].geometry.height)/2:(n.y+n.height)/p-q.y+-e.y+10);return g.addCells(c,b)}finally{g.model.endUpdate()}}function f(a,b,c){a=g.getOutgoingEdges(a);c=g.view.getState(c);var d=
+[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function l(a,b){var c=r(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?p.actions.get("selectParent").funct():
+c==b?(d=g.getOutgoingEdges(a),null!=d&&0<d.length&&g.setSelectionCell(g.model.getTerminal(d[0],!1))):(c=g.getIncomingEdges(a),null!=c&&0<c.length&&(d=f(g.model.getTerminal(c[0],!0),d,a),c=g.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&g.setSelectionCell(d[c].cell)))))}var p=this,g=p.editor.graph,n=g.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings");
+mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var A=p.menus.createPopupMenu;p.menus.createPopupMenu=function(a,c,d){A.apply(this,arguments);if(1==g.getSelectionCount()){c=g.getSelectionCell();var e=g.getOutgoingEdges(c);a.addSeparator();null!=e&&0<e.length&&(b(g.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(g.getSelectionCell())&&(a.addSeparator(),0<g.getIncomingEdges(c).length&&
+this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};p.actions.addAction("selectChildren",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(g.model.getTerminal(a[c],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+X");p.actions.addAction("selectSiblings",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);if(null!=a&&0<a.length&&
+(a=g.getOutgoingEdges(g.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(g.model.getTerminal(a[c],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+S");p.actions.addAction("selectParent",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);null!=a&&0<a.length&&g.setSelectionCell(g.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");p.actions.addAction("selectDescendants",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=
+g.getSelectionCell(),b=[];g.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});g.setSelectionCells(b)}},null,null,"Alt+Shift+D");var y=g.removeCells;g.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var k=a[f];n.isEdge(k)&&c(k)&&(e.push(k),k=n.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),k=g.getIncomingEdges(a[f]),
+a=a.concat(k)):e.push(a[f])}a=e;return y.apply(this,arguments)};p.hoverIcons.getStateAt=function(a,c,d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var t=g.duplicateCells;g.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=g.view.getState(d[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=t.call(this,a,c);if(l.length==
+a.length)for(e=0;e<a.length;e++)if(b(a[e])){var n=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]);if(0==n.length&&0<k.length){var m=this.cloneCell(k[0]);this.addEdge(m,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var x=g.moveCells;g.moveCells=function(a,c,d,e,f,k,l){var n=null;this.model.beginUpdate();try{var m=f,q=this.view.getState(f),p=null!=q?q.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var r=
+0;r<a.length;r++)if(b(a[r])||g.model.isEdge(a[r])&&null==g.model.getTerminal(a[r],!0)){f=g.model.getParent(a[r]);break}if(null!=m&&f!=m&&null!=this.view.getState(a[0])){var u=g.getIncomingEdges(a[0]);if(0<u.length){var t=g.view.getState(g.model.getTerminal(u[0],!0));if(null!=t){var v=g.view.getState(m);null!=v&&(c=(v.getCenterX()-t.getCenterX())/g.view.scale,d=(v.getCenterY()-t.getCenterY())/g.view.scale)}}}}n=x.apply(this,arguments);if(null!=n&&null!=a&&n.length==a.length)for(r=0;r<n.length;r++)if(this.model.isEdge(n[r]))b(m)&&
+0>mxUtils.indexOf(n,this.model.getTerminal(n[r],!0))&&this.model.setTerminal(n[r],m,!0);else if(b(a[r])&&(u=g.getIncomingEdges(a[r]),0<u.length))if(!e)b(m)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],m,!0);else if(0==g.getIncomingEdges(n[r]).length){q=m;if(null==q||q==g.model.getParent(a[r]))q=g.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,g.getDefaultParent(),q,n[r])}}finally{this.model.endUpdate()}return n};if(null!=p.sidebar){var u=p.sidebar.dropAndConnect;
+p.sidebar.dropAndConnect=function(a,c,d,e){var f=g.model,k=null;f.beginUpdate();try{if(k=u.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var n=g.getCellGeometry(k[l]);n.points=null;null!=n.getTerminalPoint(!0)&&n.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var D={88:p.actions.get("selectChildren"),84:p.actions.get("selectSubtree"),80:p.actions.get("selectParent"),83:p.actions.get("selectSiblings")},B=
+p.onKeyDown;p.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&&b(g.getSelectionCell())&&1==g.getSelectionCount()){var c=null;0<g.getIncomingEdges(g.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?z(g.getSelectionCell()):d(g.getSelectionCell()):13==a.which&&(c=v(g.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&g.model.isEdge(c[0])?g.setSelectionCell(g.model.getTerminal(c[0],!1)):g.setSelectionCell(c[c.length-1]),null!=p.hoverIcons&&p.hoverIcons.update(g.view.getState(g.getSelectionCell())),
+g.startEditingAtCell(g.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var e=D[a.keyCode];null!=e&&(e.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(l(g.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
+mxEvent.consume(a))}}catch(O){console.log("error",O)}mxEvent.isConsumed(a)||B.apply(this,arguments)};var U=g.connectVertex;g.connectVertex=function(a,c,e,f,k,l){var n=g.getIncomingEdges(a);return b(a)&&0<n.length?(e=r(a),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,k=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(a):f==k?z(a):v(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):U.call(this,a,c,e,f,k,l)};g.getSubtree=function(a){var c=[a];b(a)&&
+!e(a)&&g.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var S=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){S.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width=
 "18px",this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells);
 this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var N=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){N.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 K=mxVertexHandler.prototype.destroy;
 mxVertexHandler.prototype.destroy=function(a,b){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var c=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=c.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");
 a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");b.vertex=!0;var c=new mxCell("Topic",new mxGeometry(320,
 40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");c.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;b.insertEdge(e,!0);c.insertEdge(e,!1);var d=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=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;b.insertEdge(f,!0);d.insertEdge(f,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");k.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;b.insertEdge(m,!0);k.insertEdge(m,!1);var g=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");g.vertex=!0;var p=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
-p.geometry.relative=!0;p.edge=!0;b.insertEdge(p,!0);g.insertEdge(p,!1);a.insert(e);a.insert(f);a.insert(m);a.insert(p);a.insert(b);a.insert(c);a.insert(d);a.insert(k);a.insert(g);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a],
+m.geometry.relative=!0;m.edge=!0;b.insertEdge(m,!0);k.insertEdge(m,!1);var g=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");g.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
+n.geometry.relative=!0;n.edge=!0;b.insertEdge(n,!0);g.insertEdge(n,!1);a.insert(e);a.insert(f);a.insert(m);a.insert(n);a.insert(b);a.insert(c);a.insert(d);a.insert(k);a.insert(g);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a],
 a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
 b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,
 0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var c=new mxCell("Organization",
@@ -3287,13 +3292,13 @@ a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function
 a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree sub sections",function(){var a=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");
 a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var c=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");c.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;c.insertEdge(e,!1);return sb.createVertexTemplateFromCells([b,e,a,c],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&&
-a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var d=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,d-6,Math.min(650,b.container.clientHeight-30),function(b){function d(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.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;";
-g.className="geTitle";b.appendChild(g);return g}var c=document.createElement("div");c.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;";c.className="geTitle";c.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(c,mxResources.get("moreShapes"));b.appendChild(c);mxEvent.addListener(c,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries||
-"1"==urlParams.embed&&"1"!=urlParams.libraries)c.style.bottom="0";else if(null!=a.actions.get("newLibrary")){c=document.createElement("div");c.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";c.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));c.appendChild(f);b.appendChild(c);mxEvent.addListener(c,
-"click",a.actions.get("newLibrary").funct);c=document.createElement("div");c.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;";c.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));c.appendChild(f);b.appendChild(c);mxEvent.addListener(c,"click",a.actions.get("openLibrary").funct)}else c=
-d("newLibrary",mxResources.get("newLibrary")),c.style.left="0",c=d("openLibraryFrom",mxResources.get("openLibraryFrom")),c.style.borderLeft="1px solid lightgray",c.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible());
+a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.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;";
+g.className="geTitle";b.appendChild(g);return g}var d=document.createElement("div");d.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;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries||
+"1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d,
+"click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.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;";d.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d=
+c("newLibrary",mxResources.get("newLibrary")),d.style.left="0",d=c("openLibraryFrom",mxResources.get("openLibraryFrom")),d.style.borderLeft="1px solid lightgray",d.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible());
 a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var c=document.createElement("style");c.type="text/css";c.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }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; }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; }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; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !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: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !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; }"+
-(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(c)}catch(p){}var k=function(a,b,c,d,e,f,g){var k=document.createElement("div");k.className="geSidebarContainer";k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.border="1px solid whiteSmoke";k.style.overflowX="hidden";k.style.overflowY="auto";g(k);this.window=new mxWindow(b,k,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);
+(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(c)}catch(n){}var k=function(a,b,c,d,e,f,g){var k=document.createElement("div");k.className="geSidebarContainer";k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.border="1px solid whiteSmoke";k.style.overflowX="hidden";k.style.overflowY="auto";g(k);this.window=new mxWindow(b,k,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);
 this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&
 (this.window.div.onselectstart=mxUtils.bind(this,function(b){null==b&&(b=window.event);return null!=b&&a.isSelectionAllowed(b)}))};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="#ffffff"/>').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="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<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=
@@ -3310,7 +3315,7 @@ mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c
 ["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):e.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var f=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.window.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);f.apply(this,arguments)};var l=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){l.apply(this,arguments);a||(null!=
-this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var n=Menus.prototype.init;Menus.prototype.init=function(){n.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"...";
+this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var p=Menus.prototype.init;Menus.prototype.init=function(){p.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"...";
 c.actions.get("layers").label=mxResources.get("layers")+"...";c.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(){null!=a.files&&c.importFiles(a.files,null,null,c.maxImageSize)});a.click()}));c.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();c.showImportCsvDialog()}));c.actions.put("importText",new Action(mxResources.get("text")+
 "...",function(){var a=new ParseDialog(c,"Insert from Text");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var a=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){b(c)}));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(c)}));EditorUi.enablePlantUml&&
 !c.isOffline()&&c.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(c,"Insert from Text","plantUml");c.showDialog(a.container,620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();c.menus.addSubmenu("extras",a,b,mxResources.get("preferences"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(c.menus.addMenuItems(a,["new","open","-"],b),EditorUi.isElectronApp&&c.menus.addMenuItems(a,
@@ -3323,10 +3328,10 @@ function(a,b){c.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombu
 k=function(a,b,d,e){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(c,d,e);c.showDialog(a.container,620,420,!0,!1);a.init()}),b)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):k(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),b);if("undefined"!==typeof MathJax){var d=
 c.menus.addMenuItem(a,"mathematicalTypesetting",b);c.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}c.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],b)})))};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=l.menus.get(a),e=r.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),q);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box";
 e.style.top="6px";e.style.marginRight="6px";e.style.height="30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));l.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition=
-"right 6px center",e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function c(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=l.statusContainer?n.insertBefore(g,l.statusContainer):n.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition=
+"right 6px center",e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function c(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=l.statusContainer?p.insertBefore(g,l.statusContainer):p.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition=
 "center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor=
 "pointer"):(g.setAttribute("disabled","disabled"),g.style.cursor="default")},e.addListener("stateChanged",a),a());return g}function d(a,b){var c=document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!=
-b&&mxUtils.setOpacity(c,b);null!=l.statusContainer?n.insertBefore(c,l.statusContainer):n.appendChild(c);return c}function f(){for(var b=n.firstChild;null!=b;){var f=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=f}q=n.firstChild;e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(b=1E3>e)||a("diagram");d([b?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),l.actions.get("toggleShapes").funct,
+b&&mxUtils.setOpacity(c,b);null!=l.statusContainer?p.insertBefore(c,l.statusContainer):p.appendChild(c);return c}function f(){for(var b=p.firstChild;null!=b;){var f=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=f}q=p.firstChild;e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(b=1E3>e)||a("diagram");d([b?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),l.actions.get("toggleShapes").funct,
 null,mxResources.get("shapes"),l.actions.get("image"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+":null),c(mxResources.get("format"),l.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+l.actions.get("formatPanel").shortcut+")",l.actions.get("image"),
 b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==":
 null)],b?60:null);f=a("insert",!0,b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);d([f,c(mxResources.get("delete"),l.actions.get("delete").funct,null,mxResources.get("delete"),l.actions.get("delete"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==":
@@ -3336,15 +3341,16 @@ d([c("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.tra
 640<=e?c("",b.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="):
 null,640<=e?c("",f.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="):
 null],60)}b=l.menus.get("language");null!=b&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=e?(null==O&&(f=r.addMenu("",b.funct),f.setAttribute("title",mxResources.get("language")),f.className="geToolbarButton",f.style.backgroundImage="url("+Editor.globeImage+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.position="absolute",f.style.height="24px",f.style.width="24px",f.style.zIndex="1",f.style.top="11px",f.style.right=
-"8px",f.style.cursor="pointer",n.appendChild(f),O=f),l.buttonContainer.style.paddingRight="34px"):(l.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}g.apply(this,arguments);var k=document.createElement("div");k.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";k.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(k);urlParams.clibs&&b(this);var l=this,m=l.editor.graph;
-l.toolbar=this.createToolbar(l.createDiv("geToolbar"));l.defaultLibraryName=mxResources.get("untitledLibrary");var n=document.createElement("div");n.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var q=null,r=new Menubar(l,n);l.statusContainer=l.createStatusContainer();l.statusContainer.style.position="relative";l.statusContainer.style.maxWidth="";l.statusContainer.style.marginTop=
-"7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var v=l.descriptorChanged;l.descriptorChanged=function(){v.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);n.setAttribute("title",
-a.getTitle()+(null!=b?" ("+b+")":""))}else n.removeAttribute("title")};l.setStatusText(l.editor.getStatus());n.appendChild(l.statusContainer);l.buttonContainer=document.createElement("div");l.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";n.appendChild(l.buttonContainer);l.menubarContainer=l.buttonContainer;l.tabContainer=document.createElement("div");l.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";
-var k=l.diagramContainer.parentNode,z=document.createElement("div");z.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";l.diagramContainer.style.top="47px";var E=l.menus.get("viewZoom");if(null!=E){this.tabContainer.style.right="70px";var C=r.addMenu("100%",E.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center";
-C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility="hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray";
-C.style.height=parseInt(l.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(l.tabContainer.style.height)+1+"px";z.appendChild(C);E=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,E);l.editor.addListener("resetGraphView",E);l.editor.addListener("pageSelected",E);var M=l.setGraphEnabled;l.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility,
-this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}z.appendChild(l.tabContainer);z.appendChild(n);z.appendChild(l.diagramContainer);k.appendChild(z);l.updateTabContainer();var O=null;f();mxEvent.addListener(window,"resize",function(){f();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();
-null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();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\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\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\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\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\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.\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\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\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\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\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\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\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\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\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. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\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 read access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\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\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\ngithub=GitHub\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\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\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>.\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\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.\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 page refresh.\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\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\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\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\npaste=Paste\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\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\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\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\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\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\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\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\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}'\n");Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=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="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><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="#000000"/><add as="fontColor" value="#000000"/></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><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="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="#ffffff"/><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="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><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="#ffffff"/></add></mxStylesheet>').documentElement;
+"8px",f.style.cursor="pointer",p.appendChild(f),O=f),l.buttonContainer.style.paddingRight="34px"):(l.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}g.apply(this,arguments);var k=document.createElement("div");k.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";k.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(k);null==urlParams.clibs&&null==urlParams.libs||
+b(this);var l=this,m=l.editor.graph;l.toolbar=this.createToolbar(l.createDiv("geToolbar"));l.defaultLibraryName=mxResources.get("untitledLibrary");var p=document.createElement("div");p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var q=null,r=new Menubar(l,p);l.statusContainer=l.createStatusContainer();l.statusContainer.style.position="relative";l.statusContainer.style.maxWidth=
+"";l.statusContainer.style.marginTop="7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var v=l.descriptorChanged;l.descriptorChanged=function(){v.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");
+b=mxResources.get(b);p.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else p.removeAttribute("title")};l.setStatusText(l.editor.getStatus());p.appendChild(l.statusContainer);l.buttonContainer=document.createElement("div");l.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";p.appendChild(l.buttonContainer);l.menubarContainer=l.buttonContainer;l.tabContainer=document.createElement("div");l.tabContainer.style.cssText=
+"position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var k=l.diagramContainer.parentNode,z=document.createElement("div");z.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";l.diagramContainer.style.top="47px";var F=l.menus.get("viewZoom");if(null!=F){this.tabContainer.style.right="70px";var C=r.addMenu("100%",
+F.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center";C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility=
+"hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray";C.style.height=parseInt(l.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(l.tabContainer.style.height)+1+"px";z.appendChild(C);F=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,F);l.editor.addListener("resetGraphView",
+F);l.editor.addListener("pageSelected",F);var M=l.setGraphEnabled;l.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}z.appendChild(l.tabContainer);z.appendChild(p);z.appendChild(l.diagramContainer);k.appendChild(z);l.updateTabContainer();var O=null;f();mxEvent.addListener(window,"resize",function(){f();null!=l.sidebarWindow&&
+l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();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\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\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\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\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\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.\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\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\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\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\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\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\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\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\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. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\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 read access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\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\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\ngithub=GitHub\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\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\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>.\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\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.\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 page refresh.\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\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\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\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\npaste=Paste\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\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\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\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\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\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\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\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\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}'\n");Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=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="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><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="#000000"/><add as="fontColor" value="#000000"/></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><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="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="#ffffff"/><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="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><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="#ffffff"/></add></mxStylesheet>').documentElement;
 Graph.prototype.defaultThemes.darkTheme=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="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><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="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></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="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="#2a2a2a"/><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="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><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="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,b,e){this.init(a,b,e)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://www.draw.io/";GraphViewer.prototype.imageBaseUrl="https://www.draw.io/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.allowZoomIn=!1;
 GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;
 GraphViewer.prototype.init=function(a,b,e){this.graphConfig=null!=e?e:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=this.graphConfig.toolbar?this.graphConfig.toolbar.split(" "):[];this.zoomEnabled=
@@ -3372,16 +3378,16 @@ function(){g.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),g.style.cur
 e.style.whiteSpace="nowrap";e.style.textAlign="left";e.style.zIndex=this.toolbarZIndex;e.style.backgroundColor="#eee";e.style.height=this.toolbarHeight+"px";this.toolbar=e;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(e.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(e,30);var c=null,k=null,m=mxUtils.bind(this,function(a){null!=c&&(window.clearTimeout(c),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);c=window.setTimeout(mxUtils.bind(this,
 function(){mxUtils.setOpacity(e,0);c=null;k=window.setTimeout(mxUtils.bind(this,function(){e.style.display="none";k=null}),100)}),a||200)}),q=mxUtils.bind(this,function(a){null!=c&&(window.clearTimeout(c),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);e.style.display="";mxUtils.setOpacity(e,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(q(30),m())}));mxEvent.addListener(e,mxClient.IS_POINTER?
 "pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(a){q(100)}));mxEvent.addListener(e,"mousemove",mxUtils.bind(this,function(a){q(100);mxEvent.consume(a)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var r=this.graph,v=r.getTolerance();r.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();
-this.scrollLeft=r.container.scrollLeft;this.scrollTop=r.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-r.container.scrollLeft)<v&&Math.abs(this.scrollTop-r.container.scrollTop)<v&&Math.abs(this.startX-b.getGraphX())<v&&Math.abs(this.startY-b.getGraphY())<v&&(0<parseFloat(e.style.opacity||0)?m():q(30))}})}for(var z=this.toolbarItems,d=0,f=null,l=null,n=0;n<z.length;n++){var g=z[n];if("pages"==g){l=b.ownerDocument.createElement("div");
-l.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(l,70);var p=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");p.style.borderRightStyle="none";p.style.paddingLeft="0px";p.style.paddingRight="0px";e.appendChild(l);var B=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
-1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");B.style.paddingLeft="0px";B.style.paddingRight="0px";g=mxUtils.bind(this,function(){l.innerHTML="";mxUtils.write(l,this.currentPage+1+" / "+this.diagrams.length);l.style.display=1<this.diagrams.length?"inline-block":"none";p.style.display=l.style.display;B.style.display=l.style.display});this.addListener("graphChanged",g);g()}else if("zoom"==g)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
-mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(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 x=this.graph.getModel(),t=a(mxUtils.bind(this,function(a){if(null!=f)f.parentNode.removeChild(f),
+this.scrollLeft=r.container.scrollLeft;this.scrollTop=r.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-r.container.scrollLeft)<v&&Math.abs(this.scrollTop-r.container.scrollTop)<v&&Math.abs(this.startX-b.getGraphX())<v&&Math.abs(this.startY-b.getGraphY())<v&&(0<parseFloat(e.style.opacity||0)?m():q(30))}})}for(var z=this.toolbarItems,d=0,f=null,l=null,p=0;p<z.length;p++){var g=z[p];if("pages"==g){l=b.ownerDocument.createElement("div");
+l.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(l,70);var n=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");n.style.borderRightStyle="none";n.style.paddingLeft="0px";n.style.paddingRight="0px";e.appendChild(l);var A=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");A.style.paddingLeft="0px";A.style.paddingRight="0px";g=mxUtils.bind(this,function(){l.innerHTML="";mxUtils.write(l,this.currentPage+1+" / "+this.diagrams.length);l.style.display=1<this.diagrams.length?"inline-block":"none";n.style.display=l.style.display;A.style.display=l.style.display});this.addListener("graphChanged",g);g()}else if("zoom"==g)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
+mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(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 y=this.graph.getModel(),t=a(mxUtils.bind(this,function(a){if(null!=f)f.parentNode.removeChild(f),
 f=null;else{f=this.graph.createLayersDialog();mxEvent.addListener(f,"mouseleave",function(){f.parentNode.removeChild(f);f=null});a=t.getBoundingClientRect();f.style.width="140px";f.style.padding="2px 0px 2px 0px";f.style.border="1px solid #d0d0d0";f.style.backgroundColor="#eee";f.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";f.style.fontSize="11px";f.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(f,80);var b=mxUtils.getDocumentScrollOrigin(document);f.style.left=b.x+a.left+
-"px";f.style.top=b.y+a.bottom+"px";document.body.appendChild(f)}}),Editor.layersImage,mxResources.get("layers")||"Layers");x.addListener(mxEvent.CHANGE,function(){t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"});t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"}}else"lightbox"==g?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(g=this.graphConfig["toolbar-buttons"][g],
+"px";f.style.top=b.y+a.bottom+"px";document.body.appendChild(f)}}),Editor.layersImage,mxResources.get("layers")||"Layers");y.addListener(mxEvent.CHANGE,function(){t.style.display=1<y.getChildCount(y.root)?"inline-block":"none"});t.style.display=1<y.getChildCount(y.root)?"inline-block":"none"}}else"lightbox"==g?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(g=this.graphConfig["toolbar-buttons"][g],
 null!=g&&a(null==g.enabled||g.enabled?g.handler:function(){},g.image,g.title,g.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*d);null!=this.graphConfig.title&&(z=b.ownerDocument.createElement("div"),z.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;",z.setAttribute("title",this.graphConfig.title),mxUtils.write(z,this.graphConfig.title),mxUtils.setOpacity(z,
-70),e.appendChild(z));this.minToolbarWidth=34*d;var y=b.style.border,z=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top-
-c.top,bottom:a.bottom-c.top,right:a.right-c.left};e.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=a.top+1+"px"):e.style.top=a.top+"px";"1px solid transparent"==y&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(e);var d=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=f&&(f.parentNode.removeChild(f),
-f=null);b.style.border=y});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==e||a==f)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else e.style.top=-this.toolbarHeight+"px",b.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",z):z()};
+70),e.appendChild(z));this.minToolbarWidth=34*d;var x=b.style.border,z=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top-
+c.top,bottom:a.bottom-c.top,right:a.right-c.left};e.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=a.top+1+"px"):e.style.top=a.top+"px";"1px solid transparent"==x&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(e);var d=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=f&&(f.parentNode.removeChild(f),
+f=null);b.style.border=x});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==e||a==f)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else e.style.top=-this.toolbarHeight+"px",b.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",z):z()};
 GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,c){if(null==c){var k=mxEvent.getSource(e);"a"==k.nodeName.toLowerCase()&&(c=k.getAttribute("href"))}null!=b?null==c||a.isExternalProtocol(c)||a.isBlankLink(c)||window.setTimeout(function(){b.destroy()},0):null!=c&&null==b&&a.isCustomLink(c)&&(mxEvent.isTouchEvent(e)||!mxEvent.isPopupTrigger(e))&&a.customLinkClicked(c)&&mxEvent.consume(e)}),
 mxUtils.bind(this,function(a){null!=b||!this.lightboxClickEnabled||mxEvent.isTouchEvent(a)&&0!=this.toolbarItems.length||this.showLightbox()}))};
 GraphViewer.prototype.showLightbox=function(a,b,e){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){a=null!=a?a:null!=this.graphConfig.editable?this.graphConfig.editable:!0;e={client:1,lightbox:1,target:null!=e?e:"blank"};a&&(e.edit=this.graphConfig.edit||"_blank");if(null!=b?b:1)e.close=1;this.layersEnabled&&(e.layers=1);null!=this.graphConfig&&0!=this.graphConfig.nav&&(e.nav=1);null!=this.graphConfig&&null!=this.graphConfig.highlight&&
@@ -3401,6 +3407,6 @@ GraphViewer.initCss=function(){try{var a=document.createElement("style");a.type=
 GraphViewer.cachedUrls={};GraphViewer.getUrl=function(a,b,e){if(null!=GraphViewer.cachedUrls[a])b(GraphViewer.cachedUrls[a]);else{var c=0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;c.open("GET",a);c.onload=function(){b(null!=c.getText?c.getText():c.responseText)};c.onerror=e;c.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
 (function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(e,c){function k(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function m(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function q(b,c){if(!b.resizedAttached)b.resizedAttached=
 new k,b.resizedAttached.add(c);else if(b.resizedAttached){b.resizedAttached.add(c);return}b.resizeSensor=document.createElement("div");b.resizeSensor.className="resize-sensor";b.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";b.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>';
-b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],l=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};l();var q=!1,r=function(){b.resizedAttached&&(q&&(b.resizedAttached.call(),q=!1),a(r))};a(r);var v,u,A,z,U=function(){if((A=b.offsetWidth)!=v||(z=b.offsetHeight)!=u)q=!0,v=A,u=z;l()},S=function(a,b,c){a.attachEvent?
+b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],l=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};l();var q=!1,r=function(){b.resizedAttached&&(q&&(b.resizedAttached.call(),q=!1),a(r))};a(r);var v,u,z,B,U=function(){if((z=b.offsetWidth)!=v||(B=b.offsetHeight)!=u)q=!0,v=z,u=B;l()},S=function(a,b,c){a.attachEvent?
 a.attachEvent("on"+b,c):a.addEventListener(b,c)};S(d,"scroll",U);S(f,"scroll",U)}var r=function(){GraphViewer.resizeSensorEnabled&&c()},v=Object.prototype.toString.call(e),z="[object Array]"===v||"[object NodeList]"===v||"[object HTMLCollection]"===v||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(z)for(var v=0,d=e.length;v<d;v++)q(e[v],r);else q(e,r);this.detach=function(){if(z)for(var a=0,c=e.length;a<c;a++)b.detach(e[a]);else b.detach(e)}};
 b.detach=function(a){a.resizeSensor&&(a.removeChild(a.resizeSensor),delete a.resizeSensor,delete a.resizedAttached)};window.ResizeSensor=b})();
diff --git a/src/main/webapp/js/atlas.min.js b/src/main/webapp/js/atlas.min.js
index 25528d31ba4e70895e865bc353fbc34e38134b18..b000ff9e1c711a3ddbac906f7154820eeed068ca 100644
--- a/src/main/webapp/js/atlas.min.js
+++ b/src/main/webapp/js/atlas.min.js
@@ -2015,6 +2015,8 @@ Editor.layersLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgC
 Editor.closeLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAUVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////8IN+deAAAAGnRSTlMAuvAIg/dDM/QlOeuFhj0S5s4vKgzjxJRQNiLSey0AAADNSURBVDjLfZLbEoMgDEQjRRRs1XqX///QNmOHJSnjPkHOGR7IEmeoGtJZstnwjqbRfIsmgEdtPCqe9Ynz7ZSc07rE2QiSc+qv8TvjRXA2PDUm3dpe82iJhOEUfxJJo3aCv+jKmRmH4lcCjCjeh9GWOdL/GZZkXH3PYYDrHBnfc4D/RVZf5sjoC1was+Y6HQxwaUxFvq/a0Pv343VCTxfBSRiB+ab3M3eiQZXmMNBJ3Y8pGRZtYQ7DgHMXJEdPLTaN/qBjzJOBc3nmNcbsA16bMR0oLqf+AAAAAElFTkSuQmCC";
 Editor.editLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA+hzi3nRQWyXzkm0h2j3u54gzEgSXjlYoTBgJxL2loGpAOS3Jt7Wxm35Ga7gRAAAA6UlEQVQ4y63Q2XaCMBSF4Q0JBasoQ5DJqbXjfv8HbCK2BZNwo/8FXHx7rcMC7lQu0iX8qU/qtvAWCpoqH8dYzS0SwaV5eK/UAf8X9pd2CWKzuF5Jrftp1owXwnIGLUaL3PYndOHf4kNNXWrXK/m7CHunk7K8LE6YtBpcknwG9GKxnroY+ylBXcx4xKyx/u/EuXi509cP9V7OO1oyHnzrdFTcqLG/4ibBA5pIMr/4xvKzuQDkVy9wW8SgBFD6HDvuzMvrZcC9QlkfMzI7w64m+b4PqBMNHB05lH21PVxJo2/fBXxV4hB38PcD+5AkI4FuETsAAAAASUVORK5CYII=";
 Editor.previousLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFZJREFUOMvdkskRgDAMA4lDwg2B7b9XOlge/KKvdsa25KFb5XlRvxXC/DNBEv8IFNjBgGdDgXtFgTyhwDXiQAUHCvwa4Uv6mR6UR+1led2mVonvl+tML45qCQNQLIx7AAAAAElFTkSuQmCC";Editor.nextLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg==";
+Editor.refreshLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAErnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarVdrlispCP7PKmYJouJjOT7PuTuY5c+HZZJKOkmn+055UioiIB9ghca/fyb9g8dyDOQlppBDMHh89tkWDJI5nqNn49d7PXYvYX5Hp+uCBcmhd8c0jM1fQJfbhug3vd7TKbYtJ21Be+Ei0Klm1bb50hbk7EHnPae89xV/Os7+zWbXstRj6XHuI5zRBfKcJTscO4N3Ui0OFrjsitOxvsUqhTG2Li7KC9/RdfjgvOvowXembLq7dwWZsBnCg482neW575aHzhbxTfPdQsgmmvNz9t3sac5xnK74AE8F2oe6HGWNwAh3ere2BbSIn2AcV8toCUdsQKwDzYrWiDNbeHuy586FJ4/VN24w0dthI3prm3WLlly02bYFitfG00bA08kl4NGAmgPZXm3hpTcvfY0TNHcGp2UIY+z40ugZ8TftKmhODV1mk66+gl1WYxpmKHL6BhcA4bl9Ksu/q9EpbswJWAcEZbk54YDF1ENEFb7Flls4O/CJ8WSO1ODYtwC4CLoFxiCiPZvATjiwidZGZvgxAZ8Cy63ztgIBFrGdaQIb5wLASVZ1Y0/kxWvFHmSUFgAhLiBJkiYQwPJeED/RJ8RQESeeRCRIlCRZSnDBBwkhxKA1qkQXfZQYYowp5liSSz5JCimmlHIq2WaHEiY55Eg55ZxLgdIC0QW7CzhKqba66qvUUGNNNdfSED7NN2mhxZZabqXb7jrSv4ceqaeeexk8EErDDxlhxJFGHmUi1qabfsoMM8408yxX1Daq96jxA3LvUeONmiLmF1+8oQZyjBcRrOVEFDMgZj0D8agIIKCtYmYSe28VOcXMZIukEAvUWBSczooYEPSDrUy+YndD7i1uJP5HuNlXyJFC938gRwrdRu4rbk9Q62XdKG4BpFmoPjVuorCBYaRiU9E76eN+1llySMahUBZbB82pgxvh6TwdhFiWpMXw2NOrhZf9rO0Qi4PWEeDRtUI/EPHa7t4C1eaKMs7aS2ldb2DEQ6kIC1z0DVeyxD6cTBNFL2hh/9ALkBDca+yrUrGf/6an1wwZVhjExuxr8MUMh2GoHQfSQ9KPHP2mfymI4VJ8HGm4rMEpiNTXZSZzcfpaopeBV8fiAcQqSV5EJmR1FVooLeaPY9vrroDtYw1OR3OXmHgdgcl85iO1p6ZcRi+f+/aLC2kdE9KSG2uAcjqfRJ32Dkcy9sXR6YEAFSGvwEFA66E/jUg6RV5GInA9mQBRqMYdieL2tCNhTjNJiEy9lj2O9nEmXDVhxppfvAzYM7qfvpmNHjleBH1VQyt5D14l/3pGS1Uz8qN0fyKS7qf2KELuAvwialVag+f16OjpgXACfg3f7b0pGxKpofK913aUye8spG/VHb55bxnEUur6h09C+TxrV3KOPbgs0Lv8PBWvxxukzAWSP8XRCdIhDhqs1Sv0fQnYKo5kXwv0ztyf9PSLUv+00tFH1nxgK/29LUdP20PXq8JoEd82XGZr//0nAIq/bPpxecDZaeA77bNvo+sVBTkOcvjGQT/7vHrd0129HqUcF9elfOOrJDaO/vvkpde5iu/FjH/P/wGZHRMfLTnvnwAAAAJiS0dEAP+Hj8y/AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wIFCRsCWfPx5wAAAnVJREFUSMfNlT1oU1EYht+TpLG2tqJVCqI2BXFQEcGiKGjRwUlKlVIFcalCHXTwb3FxEAedHDp1C0IFoTg4VQS1KlJLxani0oiKIk1r0/8kvedxyM1tbm6uVETwu9t33vc939/5rvSXZsIOrExEEUWErGyW6pULZBVfoz06rBZtUZ2sJvRRr/VSKeMUMfNabeapDZKnRA1dDLOI3yzjPGAfkcuSMLTxiP2ZYNjs4glLhNkMd1mP4SSTwD3rj98ajvGZ35vlOZf4CUCPNVKsSHdkjqpPDVp2/NAnpRVVoxJqcKtl1KpDigRy/ya2M+bds8QgnWwijsFQTTMXGMWWRdNTkgJx+r2DDNepyfkucMRGesuq4xNoI+e6p+kkGKIwnCYbIkCcAdfpcCOE3s5kaArsJOM631MXpA+J4wG6KxCRpqSDqi8oqdfOBAVapA6tC7hnpWIbR3RbkrSgh9EK8x4Vd5RSlc+5qPvDeNNv3S8V8mSGPETxczSk/8NMoUll+UnYfLQiwcNCPlIoIkZXdL5svqcj3XoXpC9JHbolI2nKdOhLQSrGcKDHDl0V71/FKxcxxoaiM8ZIgJ6stG7mRDt5F5PEhAlYktQH6RmRYNTFZDmyHFa5QIrNQXpOJHjhYR5TFS5gGeQA0YWS0hHnBB88RJq9UwoXAJijnzPsZisJWujmmffcIctFSrehJ2D57ts6llnGSbPgk85xE//UuAIOSZro86pc2TJcJTB0UQZwCpWnmnOkAtuv2Nw3tFZYNzmxjVPFvlvRyDXeMl0i45DmKWepza/s35hXrEbN2qEmrZWjCaU0qq8m98cvLScrp7B4/p39Au+cBBvd+o3cAAAAAElFTkSuQmCC";
+Editor.backLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADxnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjatVZbkuQoDPznFHsEJCEexwEDEXuDOf4mmHq7e6vcPUWUhWUhJZmAbdqff7v5Bz+2wsZpiD55b/FzySXO6ES7/3ZL1s3r/PF6hPsHv7k+YLgEVvZb31Z8hl9vA4Jb/vLoN2FbeeJKtB5cEsqoPKqtuLgSCe9+WvcmrXHZ3U1n/bvf09JK/nzvAsioaidH3ITE4hpHFQECSZJl9MdVeXgIfZ5+lXTMnbl2n8i79p64s3n55ZEKY/0K8E8cLT/pMXeToXtEdKv88KDma4lX7nqNvbd9dtl5MOXNmtRlKrOHwAIqZQ7zaAF/RT/MltAiprhBsQo1C9pmKBGD7U6OKmXq1KbdaANEx40DLPPGMn1RAifepihuNOocIEM1EqHHBtUEbr5ioVk3zXobRVSuhEgmJCOMeGnmyHmmXRP1vu1LLV65Ai4eaxowhnLjiigIQn1xqpPf2czdurF3wgoU1ElzxASzLXuKonRbWzJ1FsSpdcbuW4NCXQlAEWorwGBFO7KeRMmTDcyBCDxG6JOBnMVxgQKkypVMhzYiHuJEHrUxJtCMZeXdjaMFQqh4CZAGGwViOadYP8FFrKGsos6oqtegUZNmL9559d4HP86oHCS4oMGHEGJIIUeJLmr0McQYU8yJk+AI0+RTMCmmlHJG0YzUGaMzInIuXKS4osWXUGJJJW9YPpvbdPNb2OKWtly5SsX2r74GU2NNNTdqWErNNW2+hRZbarljrXXprmv3PfTYU89X1Zaqj6rRk3Lfq0ZLtaGYm3HhphrcIVxS0DhOdGgGxdgRFA9DASxoHprZSM7xUG5oZhNjUyhDNdIhTqWhGBR0jVg7XbW7KfetbkbdR7rxV8qZId1vKGeGdEu5V90OVKt5vlFkCjR24eDUSsfBhoAWM8c83kmnrXl0lNaxsx+jejyR6KwtzbwiGLa08d75wdTeR/AMwJxFcBLRkQjDpuLmFlbC99H4nsDlh/arRKH26orT8d0ynDfLii8heRlmfgnQJREAgIOv0G327URnkUwG8BIZXyNPFJD2PfCVnW+t+XQA7ODhpbw5V//Vmp/g2FXYhTKTkh/jsfuCfA9PcTgz49wuDTtE89wr+8bhaKyM/bo/RZi/PvnQms8HytrA88ToBef0uDNPMQtdn5P4pIg5M40jdOYe3jG697gz59G8JDomb8WMN+89vAJ4dJTN/Aqcg0QD3hfg1mLcz+6F8TbW8C+RZP5H27fR/TWOPkZ34erbqeFrKJn/AEE/tAwjCLp7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAuJAAALiQE3ycutAAAAB3RJTUUH4wIFCR4CJIQFogAAAWRJREFUWMPFlztLA0EURjdqJNk0gTQhkEdjYWdhIyI2YusPsbOztbFKI4ggaSxSa6FdQIgQtFKwCwhxEQI2isEHWeYeC2fxkkYLvfvBsM0w5yyX/YYNgn8IsAGMgFZgHWANeOcrH9bwFeCV72xawpcm4NuW8AXgWcGblvA5YKjgB5bwOhApeMsSXgUGCt52zmVM4CJSBvoKfioiWas3LwI3Cn4O5K3gIdBT8AsgtIR3FfwSKFjNPAd0FPwWKFnBZ4ATBb8DKpafW1PB74Ga9QUz8vAIaPz1+VO/2DP2z6xf5vf7jhpBBNRNBZxzGaCtJAZA1VRCRGaBMyXRF5Gy9SjyvnaTXANFa4nQ12+SnlkVK4kCcKUkumlIlHwdJ+mISM5aouJrOcmxiExbS9R8PSc5iuPYvKgawIOSOEyjLeeBRyWxn4bEIvCiJHbTkFie+DvaSkNiFXjzAuMgjQDrwBOw99PeT/vzU1TSg3fFAAAAAElFTkSuQmCC";
 Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.popupsAllowed=!0;mxUtils.extend(Editor,mxEventSource);Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0;
 Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))};
 Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a};
@@ -2034,11 +2036,11 @@ Editor.prototype.setFilename=function(a){this.filename=a};
 Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(a,d){c.undoableEditHappened(d.getProperty("edit"))};var d=mxUtils.bind(this,function(a,c){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,d);a.getView().addListener(mxEvent.UNDO,d);d=function(b,c){var d=a.getSelectionCellsForChanges(c.getProperty("edit").changes);a.getModel();for(var f=[],g=0;g<d.length;g++)null!=a.view.getState(d[g])&&f.push(d[g]);a.setSelectionCells(f)};
 c.addListener(mxEvent.UNDO,d);c.addListener(mxEvent.REDO,d);return c};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,c,d,b,f,e,h,g,k,l){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,n=b,u=mxUtils.getDocumentSize(),q=u.height,r=Math.max(1,Math.round((u.width-d-64)/2)),t=Math.max(1,Math.round((q-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=null!=document.body?Math.min(d,document.body.scrollWidth-64):d;b=Math.min(b,q-64);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=q+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";r+=u.x;t+=u.y;f&&document.body.appendChild(this.bg);var w=a.createDiv(k?"geTransDialog":"geDialog");f=this.getPosition(r,t,d,b);r=f.x;t=f.y;w.style.width=
-d+"px";w.style.height=b+"px";w.style.left=r+"px";w.style.top=t+"px";w.style.zIndex=this.zIndex;w.appendChild(c);document.body.appendChild(w);!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=t+14+"px",e.style.left=r+d+38-m+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
-document.body.appendChild(e),this.dialogImg=e,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(b){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,n=b=e.h)}e=mxUtils.getDocumentSize();q=e.height;this.bg.style.height=q+"px";r=Math.max(1,Math.round((e.width-d-64)/2));t=Math.max(1,Math.round((q-b-a.footerHeight)/3));d=null!=document.body?Math.min(p,document.body.scrollWidth-64):p;b=Math.min(n,q-64);e=this.getPosition(r,
-t,d,b);r=e.x;t=e.y;w.style.left=r+"px";w.style.top=t+"px";w.style.width=d+"px";w.style.height=b+"px";!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=t+14+"px",this.dialogImg.style.left=r+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
+function Dialog(a,c,d,b,f,e,h,g,k,l){var m=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(m=80);d+=m;b+=m;var p=d,n=b,u=mxUtils.getDocumentSize(),r=u.height,q=Math.max(1,Math.round((u.width-d-64)/2)),t=Math.max(1,Math.round((r-b-a.footerHeight)/3));mxClient.IS_QUIRKS||(c.style.maxHeight="100%");d=null!=document.body?Math.min(d,document.body.scrollWidth-64):d;b=Math.min(b,r-64);0<a.dialogs.length&&(this.zIndex+=2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),
+this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=r+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));u=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=u.x+"px";this.bg.style.top=u.y+"px";q+=u.x;t+=u.y;f&&document.body.appendChild(this.bg);var w=a.createDiv(k?"geTransDialog":"geDialog");f=this.getPosition(q,t,d,b);q=f.x;t=f.y;w.style.width=
+d+"px";w.style.height=b+"px";w.style.left=q+"px";w.style.top=t+"px";w.style.zIndex=this.zIndex;w.appendChild(c);document.body.appendChild(w);!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");e&&(e=document.createElement("img"),e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("close")),e.className="geDialogClose",e.style.top=t+14+"px",e.style.left=q+d+38-m+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
+document.body.appendChild(e),this.dialogImg=e,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(b){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=l){var e=l();null!=e&&(p=d=e.w,n=b=e.h)}e=mxUtils.getDocumentSize();r=e.height;this.bg.style.height=r+"px";q=Math.max(1,Math.round((e.width-d-64)/2));t=Math.max(1,Math.round((r-b-a.footerHeight)/3));d=null!=document.body?Math.min(p,document.body.scrollWidth-64):p;b=Math.min(n,r-64);e=this.getPosition(q,
+t,d,b);q=e.x;t=e.y;w.style.left=q+"px";w.style.top=t+"px";w.style.width=d+"px";w.style.height=b+"px";!g&&c.clientHeight>w.clientHeight-64&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=t+14+"px",this.dialogImg.style.left=q+d+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=h;this.container=w;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
 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+
@@ -2061,14 +2063,14 @@ var PageSetupDialog=function(a){function c(){null==m||m==mxConstants.NONE?(l.sty
 "100%";h.style.height="100%";var g=document.createElement("tbody");f=document.createElement("tr");e=document.createElement("td");e.style.verticalAlign="top";e.style.fontSize="10pt";mxUtils.write(e,mxResources.get("paperSize")+":");f.appendChild(e);e=document.createElement("td");e.style.verticalAlign="top";e.style.fontSize="10pt";var k=PageSetupDialog.addPageFormatPanel(e,"pagesetupdialog",b.pageFormat);f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");
 mxUtils.write(e,mxResources.get("background")+":");f.appendChild(e);e=document.createElement("td");e.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var l=document.createElement("button");l.style.width="18px";l.style.height="18px";l.style.marginRight="20px";l.style.backgroundPosition="center center";l.style.backgroundRepeat="no-repeat";var m=b.background;c();mxEvent.addListener(l,"click",function(b){a.pickColor(m||"none",function(a){m=a;c()});mxEvent.consume(b)});
 e.appendChild(l);mxUtils.write(e,mxResources.get("gridSize")+":");var p=document.createElement("input");p.setAttribute("type","number");p.setAttribute("min","0");p.style.width="40px";p.style.marginLeft="6px";p.value=b.getGridSize();e.appendChild(p);mxEvent.addListener(p,"change",function(){var a=parseInt(p.value);p.value=Math.max(1,isNaN(a)?b.getGridSize():a)});f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");mxUtils.write(e,mxResources.get("image")+
-":");f.appendChild(e);e=document.createElement("td");var n=document.createElement("a");n.style.textDecoration="underline";n.style.cursor="pointer";n.style.color="#a0a0a0";var u=b.backgroundImage;mxEvent.addListener(n,"click",function(b){a.showBackgroundImageDialog(function(a){u=a;d()});mxEvent.consume(b)});d();e.appendChild(n);f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");e.colSpan=2;e.style.paddingTop="16px";e.setAttribute("align","right");var q=
-mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});q.className="geBtn";a.editor.cancelFirst&&e.appendChild(q);var r=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.gridSize!==p.value&&b.setGridSize(parseInt(p.value));var c=new ChangePageSetup(a,m,u,k.get());c.ignoreColor=b.background==m;c.ignoreImage=(null!=b.backgroundImage?b.backgroundImage.src:null)===(null!=u?u.src:null);b.pageFormat.width==c.previousFormat.width&&b.pageFormat.height==c.previousFormat.height&&
-c.ignoreColor&&c.ignoreImage||b.model.execute(c)});r.className="geBtn gePrimaryBtn";e.appendChild(r);a.editor.cancelFirst||e.appendChild(q);f.appendChild(e);g.appendChild(f);h.appendChild(g);this.container=h};
-PageSetupDialog.addPageFormatPanel=function(a,c,d,b){function f(a,b,c){if(c||p!=document.activeElement&&n!=document.activeElement){a=!1;for(b=0;b<q.length;b++)c=q[b],v?"custom"==c.key&&(g.value=c.key,v=!1):null!=c.format&&("a4"==c.key?826==d.width?(d=mxRectangle.fromRectangle(d),d.width=827):826==d.height&&(d=mxRectangle.fromRectangle(d),d.height=827):"a5"==c.key&&(584==d.width?(d=mxRectangle.fromRectangle(d),d.width=583):584==d.height&&(d=mxRectangle.fromRectangle(d),d.height=583)),d.width==c.format.width&&
+":");f.appendChild(e);e=document.createElement("td");var n=document.createElement("a");n.style.textDecoration="underline";n.style.cursor="pointer";n.style.color="#a0a0a0";var u=b.backgroundImage;mxEvent.addListener(n,"click",function(b){a.showBackgroundImageDialog(function(a){u=a;d()});mxEvent.consume(b)});d();e.appendChild(n);f.appendChild(e);g.appendChild(f);f=document.createElement("tr");e=document.createElement("td");e.colSpan=2;e.style.paddingTop="16px";e.setAttribute("align","right");var r=
+mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});r.className="geBtn";a.editor.cancelFirst&&e.appendChild(r);var q=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.gridSize!==p.value&&b.setGridSize(parseInt(p.value));var c=new ChangePageSetup(a,m,u,k.get());c.ignoreColor=b.background==m;c.ignoreImage=(null!=b.backgroundImage?b.backgroundImage.src:null)===(null!=u?u.src:null);b.pageFormat.width==c.previousFormat.width&&b.pageFormat.height==c.previousFormat.height&&
+c.ignoreColor&&c.ignoreImage||b.model.execute(c)});q.className="geBtn gePrimaryBtn";e.appendChild(q);a.editor.cancelFirst||e.appendChild(r);f.appendChild(e);g.appendChild(f);h.appendChild(g);this.container=h};
+PageSetupDialog.addPageFormatPanel=function(a,c,d,b){function f(a,b,c){if(c||p!=document.activeElement&&n!=document.activeElement){a=!1;for(b=0;b<r.length;b++)c=r[b],v?"custom"==c.key&&(g.value=c.key,v=!1):null!=c.format&&("a4"==c.key?826==d.width?(d=mxRectangle.fromRectangle(d),d.width=827):826==d.height&&(d=mxRectangle.fromRectangle(d),d.height=827):"a5"==c.key&&(584==d.width?(d=mxRectangle.fromRectangle(d),d.width=583):584==d.height&&(d=mxRectangle.fromRectangle(d),d.height=583)),d.width==c.format.width&&
 d.height==c.format.height?(g.value=c.key,e.setAttribute("checked","checked"),e.defaultChecked=!0,e.checked=!0,h.removeAttribute("checked"),h.defaultChecked=!1,h.checked=!1,a=!0):d.width==c.format.height&&d.height==c.format.width&&(g.value=c.key,e.removeAttribute("checked"),e.defaultChecked=!1,e.checked=!1,h.setAttribute("checked","checked"),h.defaultChecked=!0,a=h.checked=!0));a?(k.style.display="",m.style.display="none"):(p.value=d.width/100,n.value=d.height/100,e.setAttribute("checked","checked"),
 g.value="custom",k.style.display="none",m.style.display="")}}c="format-"+c;var e=document.createElement("input");e.setAttribute("name",c);e.setAttribute("type","radio");e.setAttribute("value","portrait");var h=document.createElement("input");h.setAttribute("name",c);h.setAttribute("type","radio");h.setAttribute("value","landscape");var g=document.createElement("select");g.style.marginBottom="8px";g.style.width="202px";var k=document.createElement("div");k.style.marginLeft="4px";k.style.width="210px";
 k.style.height="24px";e.style.marginRight="6px";k.appendChild(e);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));k.appendChild(c);h.style.marginLeft="10px";h.style.marginRight="6px";k.appendChild(h);var l=document.createElement("span");l.style.width="100px";mxUtils.write(l,mxResources.get("landscape"));k.appendChild(l);var m=document.createElement("div");m.style.marginLeft="4px";m.style.width="210px";m.style.height="24px";var p=document.createElement("input");
-p.setAttribute("size","7");p.style.textAlign="right";m.appendChild(p);mxUtils.write(m," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";m.appendChild(n);mxUtils.write(m," in");k.style.display="none";m.style.display="none";for(var u={},q=PageSetupDialog.getFormats(),r=0;r<q.length;r++){var t=q[r];u[t.key]=t;var w=document.createElement("option");w.setAttribute("value",t.key);mxUtils.write(w,t.title);g.appendChild(w)}var v=!1;f();a.appendChild(g);mxUtils.br(a);
+p.setAttribute("size","7");p.style.textAlign="right";m.appendChild(p);mxUtils.write(m," in x ");var n=document.createElement("input");n.setAttribute("size","7");n.style.textAlign="right";m.appendChild(n);mxUtils.write(m," in");k.style.display="none";m.style.display="none";for(var u={},r=PageSetupDialog.getFormats(),q=0;q<r.length;q++){var t=r[q];u[t.key]=t;var w=document.createElement("option");w.setAttribute("value",t.key);mxUtils.write(w,t.title);g.appendChild(w)}var v=!1;f();a.appendChild(g);mxUtils.br(a);
 a.appendChild(k);a.appendChild(m);var z=d,x=function(a,c){var e=u[g.value];null!=e.format?(p.value=e.format.width/100,n.value=e.format.height/100,m.style.display="none",k.style.display=""):(k.style.display="none",m.style.display="");e=parseFloat(p.value);if(isNaN(e)||0>=e)p.value=d.width/100;e=parseFloat(n.value);if(isNaN(e)||0>=e)n.value=d.height/100;e=new mxRectangle(0,0,Math.floor(100*parseFloat(p.value)),Math.floor(100*parseFloat(n.value)));"custom"!=g.value&&h.checked&&(e=new mxRectangle(0,0,
 e.height,e.width));c&&v||e.width==z.width&&e.height==z.height||(z=e,null!=b&&b(z))};mxEvent.addListener(c,"click",function(a){e.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(l,"click",function(a){h.checked=!0;x(a);mxEvent.consume(a)});mxEvent.addListener(p,"blur",x);mxEvent.addListener(p,"click",x);mxEvent.addListener(n,"blur",x);mxEvent.addListener(n,"click",x);mxEvent.addListener(h,"change",x);mxEvent.addListener(e,"change",x);mxEvent.addListener(g,"change",function(a){v="custom"==g.value;
 x(a,!0)});x();return{set:function(a){d=a;f(null,null,!0)},get:function(){return z},widthInput:p,heightInput:n}};
@@ -2098,16 +2100,16 @@ this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mx
 arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32==a.which?(e=!0,this.hoverIcons.reset(),b.container.style.cursor="move",b.isEditing()||mxEvent.getSource(a)!=b.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){b.container.style.cursor="";e=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var g=b.panningHandler.isForcePanningEvent;
 b.panningHandler.isForcePanningEvent=function(a){return g.apply(this,arguments)||e||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var k=b.cellEditor.isStopEditingEvent;b.cellEditor.isStopEditingEvent=function(a){return k.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||
 mxClient.IS_SF&&mxEvent.isShiftDown(a))};var l=!1,m=null,p=null,n=null,u=mxUtils.bind(this,function(){if(null!=this.toolbar&&l!=b.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,c=[];null!=a;){var d=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),c.push(a));a=d}a=this.toolbar.fontMenu;d=this.toolbar.sizeMenu;if(null==n)this.toolbar.createTextToolbar();else{for(var e=0;e<n.length;e++)this.toolbar.container.appendChild(n[e]);this.toolbar.fontMenu=
-m;this.toolbar.sizeMenu=p}l=b.cellEditor.isContentEditing();m=a;p=d;n=c}}),q=this,r=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){r.apply(this,arguments);u();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=q.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length-
-1)&&(d=d.substring(0,d.length-1));q.toolbar.setFontName(d);q.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){t.apply(this,arguments);u()};b.container.setAttribute("tabindex","0");b.container.style.cursor=
-"default";if(window.self===window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(C){}var w=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();w.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler=
+m;this.toolbar.sizeMenu=p}l=b.cellEditor.isContentEditing();m=a;p=d;n=c}}),r=this,q=b.cellEditor.startEditing;b.cellEditor.startEditing=function(){q.apply(this,arguments);u();if(b.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=b.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=r.toolbar)){var d=c.fontFamily;"'"==d.charAt(0)&&(d=d.substring(1));"'"==d.charAt(d.length-
+1)&&(d=d.substring(0,d.length-1));r.toolbar.setFontName(d);r.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(b.cellEditor.textarea,"input",c);mxEvent.addListener(b.cellEditor.textarea,"touchend",c);mxEvent.addListener(b.cellEditor.textarea,"mouseup",c);mxEvent.addListener(b.cellEditor.textarea,"keyup",c);c()}};var t=b.cellEditor.stopEditing;b.cellEditor.stopEditing=function(a,b){t.apply(this,arguments);u()};b.container.setAttribute("tabindex","0");b.container.style.cursor=
+"default";if(window.self===window.top&&null!=b.container.parentNode)try{b.container.focus()}catch(D){}var w=b.fireMouseEvent;b.fireMouseEvent=function(a,b,c){a==mxEvent.MOUSE_DOWN&&this.container.focus();w.apply(this,arguments)};b.popupMenuHandler.autoExpand=!0;null!=this.menus&&(b.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,b,c){this.menus.createPopupMenu(a,b,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){b.popupMenuHandler.hideMenu()}));this.keyHandler=
 this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var v="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),z="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var c=b.view.getState(a);if(null!=c){a=a.clone();a.style="";a=b.getCellStyle(a);var d=[],e=[],f;for(f in c.style)a[f]!=c.style[f]&&(d.push(c.style[f]),e.push(f));f=b.getModel().getStyle(c.cell);for(var g=null!=f?f.split(";"):[],h=0;h<
 g.length;h++){var k=g[h],l=k.indexOf("=");0<=l&&(f=k.substring(0,l),k=k.substring(l+1),null!=a[f]&&"none"==k&&(d.push(k),e.push(f)))}b.getModel().isEdge(c.cell)?b.currentEdgeStyle={}:b.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",e,"values",d,"cells",[c.cell]))}};this.clearDefaultStyle=function(){b.currentEdgeStyle=mxUtils.clone(b.defaultEdgeStyle);b.currentVertexStyle=mxUtils.clone(b.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",
-[],"cells",[]))};var x=["fontFamily","fontSize","fontColor"],E="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(c=0;c<D[a].length;c++)v.push(D[a][c]);for(a=0;a<z.length;a++)0>mxUtils.indexOf(v,
-z[a])&&v.push(z[a]);var F=function(a,c){var d=b.getModel();d.beginUpdate();try{if(c)for(var e=d.isEdge(k),f=e?b.currentEdgeStyle:b.currentVertexStyle,e=["fontSize","fontFamily","fontColor"],g=0;g<e.length;g++){var h=f[e[g]];null!=h&&b.setCellStyles(e[g],h,a)}else for(h=0;h<a.length;h++){for(var k=a[h],l=d.getStyle(k),m=null!=l?l.split(";"):[],B=v.slice(),g=0;g<m.length;g++){var p=m[g],A=p.indexOf("=");if(0<=A){var n=p.substring(0,A),U=mxUtils.indexOf(B,n);0<=U&&B.splice(U,1);for(var q=0;q<D.length;q++){var u=
-D[q];if(0<=mxUtils.indexOf(u,n))for(var t=0;t<u.length;t++){var r=mxUtils.indexOf(B,u[t]);0<=r&&B.splice(r,1)}}}}for(var f=(e=d.isEdge(k))?b.currentEdgeStyle:b.currentVertexStyle,C=d.getStyle(k),g=0;g<B.length;g++){var n=B[g],w=f[n];null==w||"shape"==n&&!e||e&&!(0>mxUtils.indexOf(z,n))||(C=mxUtils.setStyle(C,n,w))}d.setStyle(k,C)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){F(b.getProperty("cells"))});b.addListener("textInserted",function(a,b){F(b.getProperty("cells"),!0)});
-b.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));F(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(x,
-d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!=h[g])if(0<=mxUtils.indexOf(z,d[g]))f||0<=mxUtils.indexOf(E,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(v,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(v,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g];if(f||k||0<=mxUtils.indexOf(E,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=
+[],"cells",[]))};var x=["fontFamily","fontSize","fontColor"],F="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),C=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],x,["opacity"],["align"],["html"]];for(a=0;a<C.length;a++)for(c=0;c<C[a].length;c++)v.push(C[a][c]);for(a=0;a<z.length;a++)0>mxUtils.indexOf(v,
+z[a])&&v.push(z[a]);var E=function(a,c){var d=b.getModel();d.beginUpdate();try{if(c)for(var e=d.isEdge(k),f=e?b.currentEdgeStyle:b.currentVertexStyle,e=["fontSize","fontFamily","fontColor"],g=0;g<e.length;g++){var h=f[e[g]];null!=h&&b.setCellStyles(e[g],h,a)}else for(h=0;h<a.length;h++){for(var k=a[h],l=d.getStyle(k),m=null!=l?l.split(";"):[],B=v.slice(),g=0;g<m.length;g++){var p=m[g],A=p.indexOf("=");if(0<=A){var n=p.substring(0,A),U=mxUtils.indexOf(B,n);0<=U&&B.splice(U,1);for(var r=0;r<C.length;r++){var u=
+C[r];if(0<=mxUtils.indexOf(u,n))for(var D=0;D<u.length;D++){var t=mxUtils.indexOf(B,u[D]);0<=t&&B.splice(t,1)}}}}for(var f=(e=d.isEdge(k))?b.currentEdgeStyle:b.currentVertexStyle,q=d.getStyle(k),g=0;g<B.length;g++){var n=B[g],w=f[n];null==w||"shape"==n&&!e||e&&!(0>mxUtils.indexOf(z,n))||(q=mxUtils.setStyle(q,n,w))}d.setStyle(k,q)}}finally{d.endUpdate()}};b.addListener("cellsInserted",function(a,b){E(b.getProperty("cells"))});b.addListener("textInserted",function(a,b){E(b.getProperty("cells"),!0)});
+b.connectionHandler.addListener(mxEvent.CONNECT,function(a,b){var c=[b.getProperty("cell")];b.getProperty("terminalInserted")&&c.push(b.getProperty("terminal"));E(c)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var d=c.getProperty("cells"),e=!1,f=!1;if(0<d.length)for(var g=0;g<d.length&&(e=b.getModel().isVertex(d[g])||e,!(f=b.getModel().isEdge(d[g])||f)||!e);g++);else f=e=!0;for(var d=c.getProperty("keys"),h=c.getProperty("values"),g=0;g<d.length;g++){var k=0<=mxUtils.indexOf(x,
+d[g]);if("strokeColor"!=d[g]||null!=h[g]&&"none"!=h[g])if(0<=mxUtils.indexOf(z,d[g]))f||0<=mxUtils.indexOf(F,d[g])?null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=h[g]:e&&0<=mxUtils.indexOf(v,d[g])&&(null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g]);else if(0<=mxUtils.indexOf(v,d[g])){if(e||k)null==h[g]?delete b.currentVertexStyle[d[g]]:b.currentVertexStyle[d[g]]=h[g];if(f||k||0<=mxUtils.indexOf(F,d[g]))null==h[g]?delete b.currentEdgeStyle[d[g]]:b.currentEdgeStyle[d[g]]=
 h[g]}}null!=this.toolbar&&(this.toolbar.setFontName(b.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(b.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==b.currentEdgeStyle.edgeStyle&&"1"==b.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==b.currentEdgeStyle.edgeStyle||"none"==b.currentEdgeStyle.edgeStyle||null==
 b.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==b.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==b.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&
 (this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==b.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==b.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==b.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",b.currentEdgeStyle.shape,b.currentEdgeStyle[mxConstants.STYLE_STARTARROW],
@@ -2130,28 +2132,29 @@ EditorUi.prototype.initClipboard=function(){var a=this,c=mxClipboard.cut;mxClipb
 !1,null):d=b.apply(this,arguments);a.updatePasteActionStates();return d};var f=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){f.apply(this,arguments);a.updatePasteActionStates()};var e=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,c){e.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20;
 EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),b=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,
 this.scale*a.height*b.height)};a.getPreferredPageSize=function(a,b,c){a=this.getPageLayout();b=this.getPageSize();return new mxRectangle(0,0,a.width*b.width,a.height*b.height)};var c=null,d=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(b,c,d,e){if(null!=a.container){d=null!=d?d:0;e=null!=e?e:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),f=mxUtils.hasScrollbars(a.container),h=a.view.translate,k=a.view.scale,l=mxRectangle.fromRectangle(g);
-l.x=l.x/k-h.x;l.y=l.y/k-h.y;l.width/=k;l.height/=k;var h=a.container.scrollTop,m=a.container.scrollLeft,p=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)p+=3;var n=a.container.offsetWidth-p,p=a.container.offsetHeight-p;b=b?Math.max(.3,Math.min(c||1,n/l.width)):k;c=(n-b*l.width)/2/b;var B=0==this.lightboxVerticalDivider?0:(p-b*l.height)/this.lightboxVerticalDivider/b;f&&(c=Math.max(c,0),B=Math.max(B,0));if(f||g.width<n||g.height<p)a.view.scaleAndTranslate(b,
-Math.floor(c-l.x),Math.floor(B-l.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=m*b/k;else if(0!=d||0!=e)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/k),Math.floor(g.y+e/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var b=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",b);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",b)});this.editor.addListener("resetGraphView",
-mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){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.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var f=mxUtils.bind(this,function(){var b=mxUtils.getCurrentStyle(a.container);this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||
-0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",f);f();var e=0,f=mxUtils.bind(this,function(a,b,c){e++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=c&&d.setAttribute("title",c);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);d.appendChild(a);this.chromelessToolbar.appendChild(d);
-return d}),h=f(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),g=document.createElement("div");g.style.display="inline-block";g.style.verticalAlign="top";g.style.fontFamily="Helvetica,Arial";g.style.marginTop="8px";g.style.fontSize="14px";g.style.color="#ffffff";this.chromelessToolbar.appendChild(g);var k=f(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,
-mxResources.get("nextPage")),l=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(g.innerHTML="",mxUtils.write(g,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});h.style.paddingLeft="0px";h.style.paddingRight="4px";k.style.paddingLeft="4px";k.style.paddingRight="0px";var m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(k.style.display="",h.style.display="",g.style.display="inline-block"):
-(k.style.display="none",h.style.display="none",g.style.display="none");l()});this.editor.addListener("resetGraphView",m);this.editor.addListener("pageSelected",l);f(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");f(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");f(mxUtils.bind(this,
-function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var p=null,n=null,u=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),fadeThead=null);null!=n&&(window.clearTimeout(n),fadeThead2=null);p=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);p=null;n=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
-"none";n=null}),600)}),a||200)}),q=mxUtils.bind(this,function(a){null!=p&&(window.clearTimeout(p),fadeThead=null);null!=n&&(window.clearTimeout(n),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var r=f(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,
-"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var c=r.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";
-mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=c.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=c.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(b)}),Editor.layersLargeImage,mxResources.get("layers")),t=a.getModel();t.addListener(mxEvent.CHANGE,function(){r.style.display=1<t.getChildCount(t.root)?
-"":"none"})}this.addChromelessToolbarItems(f);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||f(mxUtils.bind(this,function(b){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(b)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var w=
-this.lightboxToolbarActions[m];f(w.fn,w.icon,w.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||f(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?
-"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||q(30),u())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?u():q(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?u():q(100);mxEvent.consume(a)}));
-mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var v=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<v&&Math.abs(this.scrollTop-
-a.container.scrollTop)<v&&Math.abs(this.startX-c.getGraphX())<v&&Math.abs(this.startY-c.getGraphY())<v&&(0<parseFloat(d.chromelessToolbar.style.opacity||0)?u():q(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var z=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=
-a.y-(this.y0||0)*b.height}z.apply(this,arguments)};var x=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),c=this.getPagePadding(),d=this.getPageSize(),e=Math.ceil(2*c.x+b.width*d.width),g=Math.ceil(2*c.y+b.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=e||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,e,g);e=c.x-b.x*d.width;c=c.y-b.y*d.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==
-c?x.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var E=null;a.lazyZoom=function(b){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);b?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=
-(this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*
-this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var b=mxUtils.getOffset(a.container),e=0,g=0;null!=E&&(e=a.container.offsetWidth/2-E.x+b.x,g=a.container.offsetHeight/2-E.y+b.y);b=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=b&&(null!=c&&d.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),g*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==g||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor-
-1),a.container.scrollTop-=g*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(b))for(var d=mxEvent.getSource(b);null!=d;){if(d==a.container){E=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));a.lazyZoom(c);mxEvent.consume(b);break}d=d.parentNode}}))};
+l.x=l.x/k-h.x;l.y=l.y/k-h.y;l.width/=k;l.height/=k;var h=a.container.scrollTop,m=a.container.scrollLeft,p=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)p+=3;var B=a.container.offsetWidth-p,p=a.container.offsetHeight-p;b=b?Math.max(.3,Math.min(c||1,B/l.width)):k;c=(B-b*l.width)/2/b;var I=0==this.lightboxVerticalDivider?0:(p-b*l.height)/this.lightboxVerticalDivider/b;f&&(c=Math.max(c,0),I=Math.max(I,0));if(f||g.width<B||g.height<p)a.view.scaleAndTranslate(b,
+Math.floor(c-l.x),Math.floor(I-l.y)),a.container.scrollTop=h*b/k,a.container.scrollLeft=m*b/k;else if(0!=d||0!=e)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+d/k),Math.floor(g.y+e/k))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var b=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",b);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",b)});this.editor.addListener("resetGraphView",
+mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(b){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(b){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var f=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden";
+this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var e=mxUtils.bind(this,function(){var b=mxUtils.getCurrentStyle(a.container);
+this.chromelessToolbar.style.bottom=(null!=b?parseInt(b["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var h=0,e=mxUtils.bind(this,function(a,b,c){h++;var d=document.createElement("span");d.style.paddingLeft="8px";d.style.paddingRight="8px";d.style.cursor="pointer";mxEvent.addListener(d,"click",a);null!=c&&d.setAttribute("title",c);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",
+b);d.appendChild(a);this.chromelessToolbar.appendChild(d);return d});null!=f.backBtn&&e(mxUtils.bind(this,function(a){window.location.href=f.backBtn.url;mxEvent.consume(a)}),Editor.backLargeImage,mxResources.get("goback",null,"Go Back"));var g=e(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),k=document.createElement("div");k.style.display="inline-block";k.style.verticalAlign="top";k.style.fontFamily=
+"Helvetica,Arial";k.style.marginTop="8px";k.style.fontSize="14px";k.style.color="#ffffff";this.chromelessToolbar.appendChild(k);var l=e(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(k.innerHTML="",mxUtils.write(k,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});g.style.paddingLeft="0px";
+g.style.paddingRight="4px";l.style.paddingLeft="4px";l.style.paddingRight="0px";var p=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(l.style.display="",g.style.display="",k.style.display="inline-block"):(l.style.display="none",g.style.display="none",k.style.display="none");m()});this.editor.addListener("resetGraphView",p);this.editor.addListener("pageSelected",m);e(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,
+mxResources.get("zoomOut")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(b){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(b)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var n=null,u=null,r=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),
+fadeThead=null);null!=u&&(window.clearTimeout(u),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);n=null;u=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";u=null}),600)}),a||200)}),q=mxUtils.bind(this,function(a){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=u&&(window.clearTimeout(u),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||
+30)});if("1"==urlParams.layers){this.layersDialog=null;var t=e(mxUtils.bind(this,function(b){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var c=t.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius",
+"5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=c.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);
+this.layersDialog.style.zIndex=c.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(b)}),Editor.layersLargeImage,mxResources.get("layers")),w=a.getModel();w.addListener(mxEvent.CHANGE,function(){t.style.display=1<w.getChildCount(w.root)?"":"none"})}this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(b){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):
+a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(b)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(p=0;p<this.lightboxToolbarActions.length;p++){var v=this.lightboxToolbarActions[p];e(v.fn,v.icon,v.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||e(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");
+null!=f.refreshBtn&&e(mxUtils.bind(this,function(a){f.refreshBtn.url?window.location.href=f.refreshBtn.url:window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+(mxEvent.isShiftDown(a)||q(30),r())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?r():q(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?r():q(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+q(30)}));var z=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(b,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<z&&Math.abs(this.scrollTop-a.container.scrollTop)<z&&Math.abs(this.startX-c.getGraphX())<z&&Math.abs(this.startY-c.getGraphY())<
+z&&(0<parseFloat(d.chromelessToolbar.style.opacity||0)?r():q(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var x=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),b=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*b.width;this.translate.y=a.y-(this.y0||0)*b.height}x.apply(this,arguments)};var F=a.sizeDidChange;a.sizeDidChange=function(){if(null!=
+this.container&&mxUtils.hasScrollbars(this.container)){var b=this.getPageLayout(),c=this.getPagePadding(),d=this.getPageSize(),e=Math.ceil(2*c.x+b.width*d.width),g=Math.ceil(2*c.y+b.height*d.height),f=a.minimumGraphSize;if(null==f||f.width!=e||f.height!=g)a.minimumGraphSize=new mxRectangle(0,0,e,g);e=c.x-b.x*d.width;c=c.y-b.y*d.height;this.autoTranslate||this.view.translate.x==e&&this.view.translate.y==c?F.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=b.x,this.view.y0=b.y,b=a.view.translate.x,
+d=a.view.translate.y,a.view.setTranslate(e,c),a.container.scrollLeft+=Math.round((e-b)*a.view.scale),a.container.scrollTop+=Math.round((c-d)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var C=null;a.lazyZoom=function(b){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);b?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=
+Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,
+function(){var b=mxUtils.getOffset(a.container),e=0,g=0;null!=C&&(e=a.container.offsetWidth/2-C.x+b.x,g=a.container.offsetHeight/2-C.y+b.y);b=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=b&&(null!=c&&d.chromelessResize(!1,null,e*(this.cumulativeZoomFactor-1),g*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==e&&0==g||(a.container.scrollLeft-=e*(this.cumulativeZoomFactor-1),a.container.scrollTop-=g*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=
+1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(b,c){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(b))for(var d=mxEvent.getSource(b);null!=d;){if(d==a.container){C=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b));a.lazyZoom(c);mxEvent.consume(b);break}d=d.parentNode}}))};
 EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))};
 EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return 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){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
@@ -2254,9 +2257,9 @@ null,e)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for
 Sidebar.prototype.addSearchPalette=function(a){var c=document.createElement("div");c.style.visibility="hidden";this.container.appendChild(c);var d=document.createElement("div");d.className="geSidebar";d.style.boxSizing="border-box";d.style.overflow="hidden";d.style.width="100%";d.style.padding="8px";d.style.paddingTop="14px";d.style.paddingBottom="0px";a||(d.style.display="none");var b=document.createElement("div");b.style.whiteSpace="nowrap";b.style.textOverflow="clip";b.style.paddingBottom="8px";
 b.style.cursor="default";var f=document.createElement("input");f.setAttribute("placeholder",mxResources.get("searchShapes"));f.setAttribute("type","text");f.style.fontSize="12px";f.style.overflow="hidden";f.style.boxSizing="border-box";f.style.border="solid 1px #d5d5d5";f.style.borderRadius="4px";f.style.width="100%";f.style.outline="none";f.style.padding="6px";b.appendChild(f);var e=document.createElement("img");e.setAttribute("src",Sidebar.prototype.searchImage);e.setAttribute("title",mxResources.get("search"));
 e.style.position="relative";e.style.left="-18px";mxClient.IS_QUIRKS?(f.style.height="28px",e.style.top="-4px"):e.style.top="1px";e.style.background="url('"+this.editorUi.editor.transparentImage+"')";var h;b.appendChild(e);d.appendChild(b);var g=document.createElement("center"),k=mxUtils.button(mxResources.get("moreResults"),function(){h()});k.style.display="none";k.style.lineHeight="normal";k.style.marginTop="4px";k.style.marginBottom="8px";g.style.paddingTop="4px";g.style.paddingBottom="8px";g.appendChild(k);
-d.appendChild(g);var l="",m=!1,p=!1,n=0,u={},q=12,r=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var a=d.firstChild;null!=a;){var c=a.nextSibling;a!=b&&a!=g&&a.parentNode.removeChild(a);a=c}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),k.style.display="none",l=f.value="",r());f.focus()});h=mxUtils.bind(this,function(){q=4*Math.max(1,
-Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(r(),l=f.value,u={},p=!1,n=0),!m&&!p)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(l,q,n,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;n++;this.insertSearchHint(d,l,q,n,b,c,e,f);null!=g.parentNode&&g.parentNode.removeChild(g);
-for(c=0;c<b.length;c++)f=b[c](),null==u[f.innerHTML]&&(u[f.innerHTML]="1",d.appendChild(b[c]()));e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",p=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else r(),l=f.value="",u={},k.style.display="none",p=!1,f.focus()});mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))}));
+d.appendChild(g);var l="",m=!1,p=!1,n=0,u={},r=12,q=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var a=d.firstChild;null!=a;){var c=a.nextSibling;a!=b&&a!=g&&a.parentNode.removeChild(a);a=c}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),k.style.display="none",l=f.value="",q());f.focus()});h=mxUtils.bind(this,function(){r=4*Math.max(1,
+Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=f.value){if(null!=g.parentNode&&(l!=f.value&&(q(),l=f.value,u={},p=!1,n=0),!m&&!p)){k.setAttribute("disabled","true");k.style.display="";k.style.cursor="wait";k.innerHTML=mxResources.get("loading")+"...";m=!0;var a={};this.currentSearch=a;this.searchEntries(l,r,n,mxUtils.bind(this,function(b,c,e,f){if(this.currentSearch==a){b=null!=b?b:[];m=!1;n++;this.insertSearchHint(d,l,r,n,b,c,e,f);null!=g.parentNode&&g.parentNode.removeChild(g);
+for(c=0;c<b.length;c++)f=b[c](),null==u[f.innerHTML]&&(u[f.innerHTML]="1",d.appendChild(b[c]()));e?(k.removeAttribute("disabled"),k.innerHTML=mxResources.get("moreResults")):(k.innerHTML=mxResources.get("reset"),k.style.display="none",p=!0);k.style.cursor="";d.appendChild(g)}}),mxUtils.bind(this,function(){k.style.cursor=""}))}}else q(),l=f.value="",u={},k.style.display="none",p=!1,f.focus()});mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(a){13==a.keyCode&&(h(),mxEvent.consume(a))}));
 mxEvent.addListener(f,"focus",function(){f.style.paddingRight=""});mxEvent.addListener(f,"blur",function(){f.style.paddingRight="20px"});f.style.paddingRight="20px";mxEvent.addListener(f,"keyup",mxUtils.bind(this,function(a){""==f.value?(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search"))):(e.setAttribute("src",Dialog.prototype.closeImage),e.setAttribute("title",mxResources.get("reset")));""==f.value?(p=!0,k.style.display="none"):f.value!=l?(k.style.display=
 "none",p=!1):m||(k.style.display=p?"none":"")}));mxEvent.addListener(f,"mousedown",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});mxEvent.addListener(f,"selectstart",function(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0});a=document.createElement("div");a.appendChild(d);this.container.appendChild(a);this.palettes.search=[c,a]};
 Sidebar.prototype.insertSearchHint=function(a,c,d,b,f,e,h,g){0==f.length&&1==b&&(d=document.createElement("div"),d.className="geTitle",d.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(d,mxResources.get("noResultsFor",[c])),a.appendChild(d))};
@@ -2371,39 +2374,39 @@ Sidebar.prototype.updateShapes=function(a,c){var d=this.editorUi.editor.graph,b=
 d.getModel().isEdge(k)==d.getModel().isEdge(a)){var l=d.view.getState(k),m=null!=l?l.style:d.getCellStyle(c[g]);d.getModel().setStyle(k,e);if(null!=l&&"1"==mxUtils.getValue(l.style,"composite","0"))for(var p=d.model.getChildCount(k);0<=p;p--)d.model.remove(d.model.getChildAt(k,p));if(null!=m)for("umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=b[mxConstants.STYLE_SHAPE]&&(d.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[k]),d.setCellStyles("participant",b[mxConstants.STYLE_SHAPE],[k])),
 p=0;p<h.length;p++){var n=m[h[p]];null!=n&&d.setCellStyles(h[p],n,[k])}f.push(k)}}}finally{d.model.endUpdate()}return f};
 Sidebar.prototype.createDropHandler=function(a,c,d,b){d=null!=d?d:!0;return mxUtils.bind(this,function(f,e,h,g,k,l){for(l=l?null:mxEvent.isTouchEvent(e)||mxEvent.isPenEvent(e)?document.elementFromPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)):mxEvent.getSource(e);null!=l&&l!=this.container;)l=l.parentNode;if(null==l&&f.isEnabled()){a=f.getImportableCells(a);if(0<a.length){f.stopEditing();l=null==h||mxEvent.isAltDown(e)?!1:f.isValidDropTarget(h,a,e);var m=null;null==h||l||(h=null);if(!f.isCellLocked(h||
-f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var p=f.cloneCells(a);f.splitEdge(h,p,null,g-b.width/2,k-b.height/2);m=p}else 0<a.length&&(m=f.importCells(a,g,k,h));if(null!=f.layoutManager){var n=f.layoutManager.getLayout(h);if(null!=n){var u=f.view.scale,q=f.view.translate,r=(g+q.x)*u,t=(k+q.y)*u;for(h=0;h<m.length;h++)n.moveCell(m[h],r,t)}}!d||null!=e&&mxEvent.isShiftDown(e)||f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!=
+f.getDefaultParent())){f.model.beginUpdate();try{g=Math.round(g);k=Math.round(k);if(c&&f.isSplitTarget(h,a,e)){var p=f.cloneCells(a);f.splitEdge(h,p,null,g-b.width/2,k-b.height/2);m=p}else 0<a.length&&(m=f.importCells(a,g,k,h));if(null!=f.layoutManager){var n=f.layoutManager.getLayout(h);if(null!=n){var u=f.view.scale,r=f.view.translate,q=(g+r.x)*u,t=(k+r.y)*u;for(h=0;h<m.length;h++)n.moveCell(m[h],q,t)}}!d||null!=e&&mxEvent.isShiftDown(e)||f.fireEvent(new mxEventObject("cellsInserted","cells",m))}catch(w){this.editorUi.handleError(w)}finally{f.model.endUpdate()}null!=
 m&&0<m.length&&(f.scrollCellToVisible(m[0]),f.setSelectionCells(m));f.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=m&&1==m.length&&window.setTimeout(function(){f.startEditing(m[0])},0)}}mxEvent.consume(e)}})};Sidebar.prototype.createDragPreview=function(a,c){var d=document.createElement("div");d.style.border=this.dragPreviewBorder;d.style.width=a+"px";d.style.height=c+"px";return d};
-Sidebar.prototype.dropAndConnect=function(a,c,d,b,f){var e=this.getDropAndConnectGeometry(a,c[b],d,c),h=[];if(null!=e){var g=this.editorUi.editor.graph,k=null;g.model.beginUpdate();try{var l=g.getCellGeometry(a),m=g.getCellGeometry(c[b]),p=g.model.getParent(a),n=!0;if(null!=g.layoutManager){var u=g.layoutManager.getLayout(p);if(null!=u&&u.constructor==mxStackLayout&&(n=!1,h=g.view.getState(p),null!=h)){var q=new mxPoint(h.x/g.view.scale-g.view.translate.x,h.y/g.view.scale-g.view.translate.y);e.x+=
-q.x;e.y+=q.y;var r=e.getTerminalPoint(!1);null!=r&&(r.x+=q.x,r.y+=q.y)}}var t=m.x,w=m.y;g.model.isEdge(c[b])&&(w=t=0);var v=g.model.isEdge(a)||null!=l&&!l.relative&&n,h=c=g.importCells(c,e.x-(v?t:0),e.y-(v?w:0),v?p:null);if(g.model.isEdge(a))g.model.setTerminal(a,c[b],d==mxConstants.DIRECTION_NORTH);else if(g.model.isEdge(c[b])){g.model.setTerminal(c[b],a,!0);var z=g.getCellGeometry(c[b]);z.points=null;if(null!=z.getTerminalPoint(!1))z.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(v&&g.model.isVertex(p)){var x=
-g.view.getState(p),q=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,q.x,q.y,null,null,!0)}}else m=g.getCellGeometry(c[b]),t=e.x-Math.round(m.x),w=e.y-Math.round(m.y),e.x=Math.round(m.x),e.y=Math.round(m.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,t,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)||
-g.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(E){this.editorUi.handleError(E)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h};
+Sidebar.prototype.dropAndConnect=function(a,c,d,b,f){var e=this.getDropAndConnectGeometry(a,c[b],d,c),h=[];if(null!=e){var g=this.editorUi.editor.graph,k=null;g.model.beginUpdate();try{var l=g.getCellGeometry(a),m=g.getCellGeometry(c[b]),p=g.model.getParent(a),n=!0;if(null!=g.layoutManager){var u=g.layoutManager.getLayout(p);if(null!=u&&u.constructor==mxStackLayout&&(n=!1,h=g.view.getState(p),null!=h)){var r=new mxPoint(h.x/g.view.scale-g.view.translate.x,h.y/g.view.scale-g.view.translate.y);e.x+=
+r.x;e.y+=r.y;var q=e.getTerminalPoint(!1);null!=q&&(q.x+=r.x,q.y+=r.y)}}var t=m.x,w=m.y;g.model.isEdge(c[b])&&(w=t=0);var v=g.model.isEdge(a)||null!=l&&!l.relative&&n,h=c=g.importCells(c,e.x-(v?t:0),e.y-(v?w:0),v?p:null);if(g.model.isEdge(a))g.model.setTerminal(a,c[b],d==mxConstants.DIRECTION_NORTH);else if(g.model.isEdge(c[b])){g.model.setTerminal(c[b],a,!0);var z=g.getCellGeometry(c[b]);z.points=null;if(null!=z.getTerminalPoint(!1))z.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(v&&g.model.isVertex(p)){var x=
+g.view.getState(p),r=x.cell!=g.view.currentRoot?new mxPoint(x.x/g.view.scale-g.view.translate.x,x.y/g.view.scale-g.view.translate.y):new mxPoint(0,0);g.cellsMoved(c,r.x,r.y,null,null,!0)}}else m=g.getCellGeometry(c[b]),t=e.x-Math.round(m.x),w=e.y-Math.round(m.y),e.x=Math.round(m.x),e.y=Math.round(m.y),g.model.setGeometry(c[b],e),g.cellsMoved(c,t,w,null,null,!0),h=c.slice(),k=1==h.length?h[0]:null,c.push(g.insertEdge(null,null,"",a,c[b],g.createCurrentEdgeStyle()));null!=f&&mxEvent.isShiftDown(f)||
+g.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(F){this.editorUi.handleError(F)}finally{g.model.endUpdate()}g.editAfterInsert&&null!=f&&mxEvent.isMouseEvent(f)&&null!=k&&window.setTimeout(function(){g.startEditing(k)},0)}return h};
 Sidebar.prototype.getDropAndConnectGeometry=function(a,c,d,b){var f=this.editorUi.editor.graph,e=f.view,h=1<b.length,g=f.getCellGeometry(a);b=f.getCellGeometry(c);null!=g&&null!=b&&(b=b.clone(),f.model.isEdge(a)?(a=f.view.getState(a),g=a.absolutePoints,c=g[0],f=g[g.length-1],d==mxConstants.DIRECTION_NORTH?(b.x=c.x/e.scale-e.translate.x-b.width/2,b.y=c.y/e.scale-e.translate.y-b.height/2):(b.x=f.x/e.scale-e.translate.x-b.width/2,b.y=f.y/e.scale-e.translate.y-b.height/2)):(g.relative&&(a=f.view.getState(a),
 g=g.clone(),g.x=(a.x-e.translate.x)/e.scale,g.y=(a.y-e.translate.y)/e.scale),e=f.defaultEdgeLength,f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=b.getTerminalPoint(!1)?(c=b.getTerminalPoint(!0),f=b.getTerminalPoint(!1),e=f.x-c.x,c=f.y-c.y,e=Math.sqrt(e*e+c*c),b.x=g.getCenterX(),b.y=g.getCenterY(),b.width=1,b.height=1,d==mxConstants.DIRECTION_NORTH?(b.height=e,b.y=g.y-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1)):d==mxConstants.DIRECTION_EAST?(b.width=e,b.x=g.x+g.width,b.setTerminalPoint(new mxPoint(b.x+
 b.width,b.y),!1)):d==mxConstants.DIRECTION_SOUTH?(b.height=e,b.y=g.y+g.height,b.setTerminalPoint(new mxPoint(b.x,b.y+b.height),!1)):d==mxConstants.DIRECTION_WEST&&(b.width=e,b.x=g.x-e,b.setTerminalPoint(new mxPoint(b.x,b.y),!1))):(!h&&45<b.width&&45<b.height&&45<g.width&&45<g.height&&(b.width*=g.height/b.height,b.height=g.height),b.x=g.x+g.width/2-b.width/2,b.y=g.y+g.height/2-b.height/2,d==mxConstants.DIRECTION_NORTH?b.y=b.y-g.height/2-b.height/2-e:d==mxConstants.DIRECTION_EAST?b.x=b.x+g.width/2+
 b.width/2+e:d==mxConstants.DIRECTION_SOUTH?b.y=b.y+g.height/2+b.height/2+e:d==mxConstants.DIRECTION_WEST&&(b.x=b.x-g.width/2-b.width/2-e),f.model.isEdge(c)&&null!=b.getTerminalPoint(!0)&&null!=c.getTerminal(!1)&&(g=f.getCellGeometry(c.getTerminal(!1)),null!=g&&(d==mxConstants.DIRECTION_NORTH?(b.x-=g.getCenterX(),b.y-=g.getCenterY()+g.height/2):d==mxConstants.DIRECTION_EAST?(b.x-=g.getCenterX()-g.width/2,b.y-=g.getCenterY()):d==mxConstants.DIRECTION_SOUTH?(b.x-=g.getCenterX(),b.y-=g.getCenterY()-g.height/
 2):d==mxConstants.DIRECTION_WEST&&(b.x-=g.getCenterX()+g.width/2,b.y-=g.getCenterY()))))));return b};
 Sidebar.prototype.createDragSource=function(a,c,d,b,f){function e(a,b){var c;mxClient.IS_IE&&!mxClient.IS_SVG?(mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?(c=document.createElement(mxClient.VML_PREFIX+":image"),c.setAttribute("src",a.src),c.style.borderStyle="none"):(c=document.createElement("div"),c.style.backgroundImage="url("+a.src+")",c.style.backgroundPosition="center",c.style.backgroundRepeat="no-repeat"),c.style.width=a.width+4+"px",c.style.height=a.height+4+"px",c.style.display=mxClient.IS_QUIRKS?
-"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),G=d):mxUtils.setOpacity(d,d==F?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,m=null,p=this,n=0;n<b.length&&(null==m&&this.editorUi.editor.graph.model.isVertex(b[n])?
-m=n:null==l&&this.editorUi.editor.graph.model.isEdge(b[n])&&null==this.editorUi.editor.graph.model.getTerminal(b[n],!0)&&(l=n),null==m||null==l);n++);var u=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=w&&G==F){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?b[0]:b[m],h);a.setSelectionCells(h)}else null!=b&&null!=G&&null!=
-r&&G!=F?(h=a.model.isEdge(r.cell)||null==l?m:l,a.setSelectionCells(this.dropAndConnect(r.cell,b,J,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var q=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),q.apply(this,arguments))};var r=null,t=null,w=null,v=!1,
-z=e(this.triangleUp,mxResources.get("connect")),x=e(this.triangleRight,mxResources.get("connect")),E=e(this.triangleDown,mxResources.get("connect")),D=e(this.triangleLeft,mxResources.get("connect")),F=e(this.refreshTarget,mxResources.get("replace")),C=null,M=e(this.roundDrop),L=e(this.roundDrop),J=mxConstants.DIRECTION_NORTH,G=null,K=u.createPreviewElement;u.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=b.style.width;
-this.previewElementHeight=b.style.height;return b};var O=u.dragEnter;u.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");O.apply(this,arguments)};var Q=u.dragExit;u.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");Q.apply(this,arguments)};u.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=G&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=w&&G==F)this.previewElement.style.display=
-a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=r&&null!=G){var e=a.model.isEdge(r.cell)||null==l?m:l,g=p.getDropAndConnectGeometry(r.cell,b[e],J,b),h=a.model.isEdge(r.cell)?null:a.getCellGeometry(r.cell),k=a.getCellGeometry(b[e]),B=a.model.getParent(r.cell),A=d.translate.x*d.scale,I=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(B)&&
+"inline":"inline-block"):(c=mxUtils.createImage(a.src),c.style.width=a.width+"px",c.style.height=a.height+"px");null!=b&&c.setAttribute("title",b);mxUtils.setOpacity(c,a==this.refreshTarget?30:20);c.style.position="absolute";c.style.cursor="crosshair";return c}function h(a,b,c,d){null!=d.parentNode&&(mxUtils.contains(c,a,b)?(mxUtils.setOpacity(d,100),G=d):mxUtils.setOpacity(d,d==E?30:20));return c}for(var g=this.editorUi,k=g.editor.graph,l=null,m=null,p=this,n=0;n<b.length&&(null==m&&this.editorUi.editor.graph.model.isVertex(b[n])?
+m=n:null==l&&this.editorUi.editor.graph.model.isEdge(b[n])&&null==this.editorUi.editor.graph.model.getTerminal(b[n],!0)&&(l=n),null==m||null==l);n++);var u=mxUtils.makeDraggable(a,this.editorUi.editor.graph,mxUtils.bind(this,function(a,d,e,g,f){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=b&&null!=w&&G==E){var h=a.isCellSelected(w.cell)?a.getSelectionCells():[w.cell],h=this.updateShapes(a.model.isEdge(w.cell)?b[0]:b[m],h);a.setSelectionCells(h)}else null!=b&&null!=G&&null!=
+q&&G!=E?(h=a.model.isEdge(q.cell)||null==l?m:l,a.setSelectionCells(this.dropAndConnect(q.cell,b,J,h,d))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(a.view.getState(a.getSelectionCell()))}),d,0,0,k.autoscroll,!0,!0);k.addListener(mxEvent.ESCAPE,function(a,b){u.isActive()&&u.reset()});var r=u.mouseDown;u.mouseDown=function(a){mxEvent.isPopupTrigger(a)||mxEvent.isMultiTouchEvent(a)||(k.stopEditing(),r.apply(this,arguments))};var q=null,t=null,w=null,v=!1,
+z=e(this.triangleUp,mxResources.get("connect")),x=e(this.triangleRight,mxResources.get("connect")),F=e(this.triangleDown,mxResources.get("connect")),C=e(this.triangleLeft,mxResources.get("connect")),E=e(this.refreshTarget,mxResources.get("replace")),D=null,M=e(this.roundDrop),L=e(this.roundDrop),J=mxConstants.DIRECTION_NORTH,G=null,K=u.createPreviewElement;u.createPreviewElement=function(a){var b=K.apply(this,arguments);mxClient.IS_SVG&&(b.style.pointerEvents="none");this.previewElementWidth=b.style.width;
+this.previewElementHeight=b.style.height;return b};var O=u.dragEnter;u.dragEnter=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("none");O.apply(this,arguments)};var Q=u.dragExit;u.dragExit=function(a,b){null!=g.hoverIcons&&g.hoverIcons.setDisplay("");Q.apply(this,arguments)};u.dragOver=function(a,c){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=G&&this.currentGuide.hide();if(null!=this.previewElement){var d=a.view;if(null!=w&&G==E)this.previewElement.style.display=
+a.model.isEdge(w.cell)?"none":"",this.previewElement.style.left=w.x+"px",this.previewElement.style.top=w.y+"px",this.previewElement.style.width=w.width+"px",this.previewElement.style.height=w.height+"px";else if(null!=q&&null!=G){var e=a.model.isEdge(q.cell)||null==l?m:l,g=p.getDropAndConnectGeometry(q.cell,b[e],J,b),h=a.model.isEdge(q.cell)?null:a.getCellGeometry(q.cell),k=a.getCellGeometry(b[e]),B=a.model.getParent(q.cell),A=d.translate.x*d.scale,I=d.translate.y*d.scale;null!=h&&!h.relative&&a.model.isVertex(B)&&
 B!=d.currentRoot&&(I=d.getState(B),A=I.x,I=I.y);h=k.x;k=k.y;a.model.isEdge(b[e])&&(k=h=0);this.previewElement.style.left=(g.x-h)*d.scale+A+"px";this.previewElement.style.top=(g.y-k)*d.scale+I+"px";1==b.length&&(this.previewElement.style.width=g.width*d.scale+"px",this.previewElement.style.height=g.height*d.scale+"px");this.previewElement.style.display=""}else null!=u.currentHighlight.state&&a.model.isEdge(u.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-
 f.width*d.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*d.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var P=(new Date).getTime(),H=0,B=null,I=this.editorUi.editor.graph.getCellStyle(b[0]);u.getDropTarget=mxUtils.bind(this,function(a,c,d,e){var g=mxEvent.isAltDown(e)||null==b?null:a.getCellAt(c,d);if(null!=g&&!this.graph.isCellConnectable(g)){var f=
 this.graph.getModel().getParent(g);this.graph.getModel().isVertex(f)&&this.graph.isCellConnectable(f)&&(g=f)}a.isCellLocked(g)&&(g=null);var k=a.view.getState(g),f=G=null;B!=k?(B=k,P=(new Date).getTime(),H=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=k&&(this.updateThread=window.setTimeout(function(){null==G&&(B=k,u.getDropTarget(a,c,d,e))},this.dropTargetDelay+10))):H=(new Date).getTime()-P;if(2500>H&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!=
 mxUtils.getValue(I,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(I,mxConstants.STYLE_SHAPE)||1500<H||a.model.isEdge(k.cell))&&H>this.dropTargetDelay&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(b[0]))){w=
-k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);F.style.left=Math.floor(l.x)+"px";F.style.top=Math.floor(l.y)+"px";null==C&&(a.container.appendChild(F),C=F.parentNode);h(c,d,l,F)}else null==w||!mxUtils.contains(w,c,d)||1500<H&&!mxEvent.isShiftDown(e)?(w=null,null!=C&&(F.parentNode.removeChild(F),C=null)):null!=w&&null!=C&&
-(l=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,F));if(v&&null!=r&&!mxEvent.isAltDown(e)&&null==G){f=mxRectangle.fromRectangle(r);if(a.model.isEdge(r.cell)){var A=r.absolutePoints;null!=M.parentNode&&(l=A[0],f.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),
-M)));null!=L.parentNode&&(A=A[A.length-1],f.add(h(c,d,new mxRectangle(A.x-this.roundDrop.width/2,A.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else l=mxRectangle.fromRectangle(r),null!=r.shape&&null!=r.shape.boundingBox&&(l=mxRectangle.fromRectangle(r.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(r.cell),null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset,
-l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleUp.width/2,l.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),z)),f.add(h(c,d,new mxRectangle(l.x+l.width,r.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),
-x)),f.add(h(c,d,new mxRectangle(r.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),E)),f.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,r.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),D));null!=f&&f.grow(10)}J=mxConstants.DIRECTION_NORTH;G==x?J=mxConstants.DIRECTION_EAST:G==E||G==L?J=mxConstants.DIRECTION_SOUTH:G==D&&(J=mxConstants.DIRECTION_WEST);null!=w&&G==F&&(k=w);l=(null==m||a.isCellConnectable(b[m]))&&
-(a.model.isEdge(g)&&null!=m||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=r&&5E3<=H||r!=k&&(null==f||!mxUtils.contains(f,c,d)||500<H&&null==G&&l))if(v=!1,r=5E3>H&&H>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=r&&l){f=[M,L,z,x,E,D];for(l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);a.model.isEdge(g)?(A=k.absolutePoints,null!=A&&(l=A[0],A=A[A.length-1],f=a.tolerance,new mxRectangle(c-f,d-f,2*f,2*f),M.style.left=Math.floor(l.x-this.roundDrop.width/2)+"px",
+k;var l=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);E.style.left=Math.floor(l.x)+"px";E.style.top=Math.floor(l.y)+"px";null==D&&(a.container.appendChild(E),D=E.parentNode);h(c,d,l,E)}else null==w||!mxUtils.contains(w,c,d)||1500<H&&!mxEvent.isShiftDown(e)?(w=null,null!=D&&(E.parentNode.removeChild(E),D=null)):null!=w&&null!=D&&
+(l=a.model.isEdge(w.cell)?a.view.getPoint(w):new mxPoint(w.getCenterX(),w.getCenterY()),l=new mxRectangle(l.x-this.refreshTarget.width/2,l.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),h(c,d,l,E));if(v&&null!=q&&!mxEvent.isAltDown(e)&&null==G){f=mxRectangle.fromRectangle(q);if(a.model.isEdge(q.cell)){var A=q.absolutePoints;null!=M.parentNode&&(l=A[0],f.add(h(c,d,new mxRectangle(l.x-this.roundDrop.width/2,l.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),
+M)));null!=L.parentNode&&(A=A[A.length-1],f.add(h(c,d,new mxRectangle(A.x-this.roundDrop.width/2,A.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else l=mxRectangle.fromRectangle(q),null!=q.shape&&null!=q.shape.boundingBox&&(l=mxRectangle.fromRectangle(q.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(q.cell),null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset,
+l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),f.add(h(c,d,new mxRectangle(q.getCenterX()-this.triangleUp.width/2,l.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),z)),f.add(h(c,d,new mxRectangle(l.x+l.width,q.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),
+x)),f.add(h(c,d,new mxRectangle(q.getCenterX()-this.triangleDown.width/2,l.y+l.height,this.triangleDown.width,this.triangleDown.height),F)),f.add(h(c,d,new mxRectangle(l.x-this.triangleLeft.width,q.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),C));null!=f&&f.grow(10)}J=mxConstants.DIRECTION_NORTH;G==x?J=mxConstants.DIRECTION_EAST:G==F||G==L?J=mxConstants.DIRECTION_SOUTH:G==C&&(J=mxConstants.DIRECTION_WEST);null!=w&&G==E&&(k=w);l=(null==m||a.isCellConnectable(b[m]))&&
+(a.model.isEdge(g)&&null!=m||a.model.isVertex(g)&&a.isCellConnectable(g));if(null!=q&&5E3<=H||q!=k&&(null==f||!mxUtils.contains(f,c,d)||500<H&&null==G&&l))if(v=!1,q=5E3>H&&H>this.dropTargetDelay||a.model.isEdge(g)?k:null,null!=q&&l){f=[M,L,z,x,F,C];for(l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);a.model.isEdge(g)?(A=k.absolutePoints,null!=A&&(l=A[0],A=A[A.length-1],f=a.tolerance,new mxRectangle(c-f,d-f,2*f,2*f),M.style.left=Math.floor(l.x-this.roundDrop.width/2)+"px",
 M.style.top=Math.floor(l.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(A.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(A.y-this.roundDrop.height/2)+"px",null==a.model.getTerminal(g,!0)&&a.container.appendChild(M),null==a.model.getTerminal(g,!1)&&a.container.appendChild(L))):(l=mxRectangle.fromRectangle(k),null!=k.shape&&null!=k.shape.boundingBox&&(l=mxRectangle.fromRectangle(k.shape.boundingBox)),l.grow(this.graph.tolerance),l.grow(HoverIcons.prototype.arrowSpacing),A=this.graph.selectionCellsHandler.getHandler(k.cell),
 null!=A&&(l.x-=A.horizontalOffset/2,l.y-=A.verticalOffset/2,l.width+=A.horizontalOffset,l.height+=A.verticalOffset,null!=A.rotationShape&&null!=A.rotationShape.node&&"hidden"!=A.rotationShape.node.style.visibility&&"none"!=A.rotationShape.node.style.display&&null!=A.rotationShape.boundingBox&&l.add(A.rotationShape.boundingBox)),z.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",z.style.top=Math.floor(l.y-this.triangleUp.height)+"px",x.style.left=Math.floor(l.x+l.width)+"px",x.style.top=
-Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",E.style.left=z.style.left,E.style.top=Math.floor(l.y+l.height)+"px",D.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",D.style.top=x.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(z),a.container.appendChild(E)),a.container.appendChild(x),a.container.appendChild(D));null!=k&&(t=a.selectionCellsHandler.getHandler(k.cell),null!=t&&null!=t.setHandlesVisible&&t.setHandlesVisible(!1));v=!0}else for(f=[M,L,z,x,E,D],
-l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);v||null==t||t.setHandlesVisible(!0);g=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=w&&G==F?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=G||!a.isSplitTarget(g,b,e))){for(;null!=g&&!a.isValidDropTarget(g,b,e)&&f.isVertex(f.getParent(g));)g=f.getParent(g);if(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g))g=
-null}return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[M,L,F,z,x,E,D],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=r&&null!=t&&t.reset();G=C=w=r=t=null};return u};
+Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",F.style.left=z.style.left,F.style.top=Math.floor(l.y+l.height)+"px",C.style.left=Math.floor(l.x-this.triangleLeft.width)+"px",C.style.top=x.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(z),a.container.appendChild(F)),a.container.appendChild(x),a.container.appendChild(C));null!=k&&(t=a.selectionCellsHandler.getHandler(k.cell),null!=t&&null!=t.setHandlesVisible&&t.setHandlesVisible(!1));v=!0}else for(f=[M,L,z,x,F,C],
+l=0;l<f.length;l++)null!=f[l].parentNode&&f[l].parentNode.removeChild(f[l]);v||null==t||t.setHandlesVisible(!0);g=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=w&&G==E?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);f=a.getModel();if(null!=g&&(null!=G||!a.isSplitTarget(g,b,e))){for(;null!=g&&!a.isValidDropTarget(g,b,e)&&f.isVertex(f.getParent(g));)g=f.getParent(g);if(a.view.currentRoot==g||!a.isValidRoot(g)&&0==a.getModel().getChildCount(g)||a.isCellLocked(g)||f.isEdge(g))g=
+null}return g});u.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var a=[M,L,E,z,x,F,C],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=q&&null!=t&&t.reset();G=D=w=q=t=null};return u};
 Sidebar.prototype.itemClicked=function(a,c,d,b){b=this.editorUi.editor.graph;b.container.focus();if(mxEvent.isAltDown(d)&&1==b.getSelectionCount()&&b.model.isVertex(b.getSelectionCell())){c=null;for(var f=0;f<a.length&&null==c;f++)b.model.isVertex(a[f])&&(c=f);null!=c&&(b.setSelectionCells(this.dropAndConnect(b.getSelectionCell(),a,mxEvent.isMetaDown(d)||mxEvent.isControlDown(d)?mxEvent.isShiftDown(d)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(d)?mxConstants.DIRECTION_EAST:
 mxConstants.DIRECTION_SOUTH,c,d)),b.scrollCellToVisible(b.getSelectionCell()))}else if(mxEvent.isShiftDown(d)&&!b.isSelectionEmpty())this.updateShapes(a[0],b.getSelectionCells()),b.scrollCellToVisible(b.getSelectionCell());else{a=b.getFreeInsertPoint();if(mxEvent.isAltDown(d)){var f=b.getGraphBounds(),e=b.view.translate,h=b.view.scale;a.x=f.x/h-e.x+f.width/h+b.gridSize;a.y=f.y/h-e.y}c.drop(b,d,null,a.x,a.y,!0);null!=this.editorUi.hoverIcons&&(mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d))&&this.editorUi.hoverIcons.update(b.view.getState(b.getSelectionCell()))}};
 Sidebar.prototype.addClickHandler=function(a,c,d){var b=c.mouseDown,f=c.mouseMove,e=c.mouseUp,h=this.editorUi.editor.graph.tolerance,g=null,k=this;c.mouseDown=function(c){b.apply(this,arguments);g=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};c.mouseMove=function(b){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=g&&(Math.abs(g.x-mxEvent.getClientX(b))>h||Math.abs(g.y-mxEvent.getClientY(b))>
@@ -2434,18 +2437,18 @@ m=f.bends.length-1:null!=p&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1
 b.getGraphY()),m.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=c.text&&null!=c.text.boundingBox&&mxUtils.contains(c.text.boundingBox,b.getGraphX(),b.getGraphY()))f="move";else if(mxUtils.contains(m,d[0].x,d[0].y)||mxUtils.contains(m,d[d.length-1].x,d[d.length-1].y))f="pointer";else if(null!=c.visibleSourceState||null!=c.visibleTargetState)p=this.view.getEdgeStyle(c),f="crosshair",p!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(c)&&(p=mxUtils.findNearestSegment(c,b.getGraphX(),b.getGraphY()),
 p<d.length-1&&0<=p&&(f=0==Math.round(d[p].x-d[p+1].x)?"col-resize":"row-resize"));null!=f&&c.setCursor(f)}}),mouseUp:mxUtils.bind(this,function(a,b){k=e=h=g=null})})}this.cellRenderer.getLabelValue=function(a){var b=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(b=1!=a.style.html?mxUtils.htmlEntities(b,!1):a.view.graph.sanitizeHtml(b));return b};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(a,b){return!1};this.alternateEdgeStyle="vertical";null==b&&this.loadStylesheet();var m=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=
-function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,d=this.graph.pageScale,e=c.width*d,c=c.height*d,d=this.graph.view.translate,g=this.graph.view.scale,f=this.graph.getPageLayout(),h=0;h<f.width;h++)b.push(new mxRectangle(((f.x+h)*e+d.x)*g,(f.y*c+d.y)*g,e*g,c*g));for(h=0;h<f.height;h++)b.push(new mxRectangle((f.x*e+d.x)*g,((f.y+h)*c+d.y)*g,e*g,c*g));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
+function(){var a=m.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,d=this.graph.pageScale,e=c.width*d,c=c.height*d,d=this.graph.view.translate,g=this.graph.view.scale,f=this.graph.getPageLayout(),k=0;k<f.width;k++)b.push(new mxRectangle(((f.x+k)*e+d.x)*g,(f.y*c+d.y)*g,e*g,c*g));for(k=0;k<f.height;k++)b.push(new mxRectangle((f.x*e+d.x)*g,((f.y+k)*c+d.y)*g,e*g,c*g));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
 function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var b=mxGraphHandler.prototype.getCells.apply(this,arguments),c=[],d=0;d<b.length;d++){var e=this.graph.view.getState(b[d]),e=null!=e?e.style:this.graph.getCellStyle(b[d]);
 "1"==mxUtils.getValue(e,"part","0")?(e=this.graph.model.getParent(b[d]),this.graph.model.isVertex(e)&&0>mxUtils.indexOf(b,e)&&c.push(e)):c.push(b[d])}return c};this.connectionHandler.createTargetVertex=function(a,b){var c=this.graph.view.getState(b),c=null!=c?c.style:this.graph.getCellStyle(b);mxUtils.getValue(c,"part",!1)&&(c=this.graph.model.getParent(b),this.graph.model.isVertex(c)&&(b=c));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var p=new mxRubberband(this);
-this.getRubberband=function(){return p};var n=(new Date).getTime(),u=0,q=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;q.apply(this,arguments);a!=this.currentState?(n=(new Date).getTime(),u=0):u=(new Date).getTime()-n};var r=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<u||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
-"outlineConnect","1"))&&r.apply(this,arguments)};var t=this.isToggleEvent;this.isToggleEvent=function(a){return t.apply(this,arguments)||mxEvent.isShiftDown(a)};var w=p.isForceRubberbandEvent;p.isForceRubberbandEvent=function(a){return w.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var v=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&
+this.getRubberband=function(){return p};var n=(new Date).getTime(),u=0,r=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;r.apply(this,arguments);a!=this.currentState?(n=(new Date).getTime(),u=0):u=(new Date).getTime()-n};var q=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<u||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
+"outlineConnect","1"))&&q.apply(this,arguments)};var t=this.isToggleEvent;this.isToggleEvent=function(a){return t.apply(this,arguments)||mxEvent.isShiftDown(a)};var w=p.isForceRubberbandEvent;p.isForceRubberbandEvent=function(a){return w.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var v=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&
 (v=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=v)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var z=this.click;this.click=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!b||a.isConsumed())return z.apply(this,
 arguments);b=b?a.sourceState.cell:a.getCell();null!=b&&(b=this.getLinkForCell(b),null!=b&&(this.isCustomLink(b)?this.customLinkClicked(b):this.openLink(b)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var b=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(b?a.sourceState.cell:a.getCell())};var x=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=
-this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return x.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,b,c,d,e,g){g=null!=g?g:[];if(0<c||0<d){var f=this.getModel(),h=a+c,k=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=f.getRoot()));if(null!=e)for(var l=f.getChildCount(e),B=0;B<l;B++){var m=f.getChildAt(e,B),A=this.view.getState(m);if(null!=
-A&&this.isCellVisible(m)&&"1"!=mxUtils.getValue(A.style,"locked","0")){var p=mxUtils.getValue(A.style,mxConstants.STYLE_ROTATION)||0;0!=p&&(A=mxUtils.getBoundingBox(A,p));(f.isEdge(m)||f.isVertex(m))&&A.x>=a&&A.y+A.height<=k&&A.y>=b&&A.x+A.width<=h&&g.push(m);this.getAllCells(a,b,c,d,m,g)}}}return g};var E=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:E.apply(this,arguments)};this.isCellLocked=function(a){for(a=
-this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var D=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")){var c=b.getProperty("event").getState();D=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c=
-b.getProperty("event"),d=b.getProperty("cell");null==d?(c=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c)),p.start(c.x,c.y)):null!=D?this.addSelectionCells(D):1<this.getSelectionCount()&&this.isCellSelected(d)&&this.removeSelectionCell(d);D=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){return b&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,
-mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var F=this.updateMouseEvent;this.updateMouseEvent=function(a){a=F.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};
+this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return x.apply(this,arguments)};this.selectRegion=function(a,b){var c=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(c,b);return c};this.getAllCells=function(a,b,c,d,e,g){g=null!=g?g:[];if(0<c||0<d){var f=this.getModel(),k=a+c,h=b+d;null==e&&(e=this.getCurrentRoot(),null==e&&(e=f.getRoot()));if(null!=e)for(var l=f.getChildCount(e),B=0;B<l;B++){var m=f.getChildAt(e,B),A=this.view.getState(m);if(null!=
+A&&this.isCellVisible(m)&&"1"!=mxUtils.getValue(A.style,"locked","0")){var p=mxUtils.getValue(A.style,mxConstants.STYLE_ROTATION)||0;0!=p&&(A=mxUtils.getBoundingBox(A,p));(f.isEdge(m)||f.isVertex(m))&&A.x>=a&&A.y+A.height<=h&&A.y>=b&&A.x+A.width<=k&&g.push(m);this.getAllCells(a,b,c,d,m,g)}}}return g};var F=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,b,c){return this.graph.isCellSelected(a)?!1:F.apply(this,arguments)};this.isCellLocked=function(a){for(a=
+this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var C=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")){var c=b.getProperty("event").getState();C=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c=
+b.getProperty("event"),d=b.getProperty("cell");null==d?(c=mxUtils.convertPoint(this.container,mxEvent.getClientX(c),mxEvent.getClientY(c)),p.start(c.x,c.y)):null!=C?this.addSelectionCells(C):1<this.getSelectionCount()&&this.isCellSelected(d)&&this.removeSelectionCell(d);C=null;b.consume()}}));this.connectionHandler.selectCells=function(a,b){this.graph.setSelectionCell(b||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,b){return b&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,
+mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var E=this.updateMouseEvent;this.updateMouseEvent=function(a){a=E.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};
 Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;
 Graph.createSvgImage=function(a,c,d){d=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" version="1.1">'+d+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0)),a,c)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;
 Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);
@@ -2475,8 +2478,8 @@ Graph.prototype.isLabelMovable=function(a){var c=this.view.getState(a),c=null!=c
 Graph.prototype.getGlobalVariable=function(a){var c=null;"date"==a?c=(new Date).toLocaleDateString():"time"==a?c=(new Date).toLocaleTimeString():"timestamp"==a?c=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),c=this.formatDate(new Date,a));return c};
 Graph.prototype.formatDate=function(a,c,d){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 b=this.dateFormatCache,f=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,e=/[^-+\dA-Z]/g,h=function(a,b){a=String(a);for(b=b||2;a.length<b;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(b.masks[c]||c||b.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),d=!0);var g=d?"getUTC":"get",k=a[g+"Date"](),l=a[g+"Day"](),m=a[g+"Month"](),p=a[g+"FullYear"](),n=a[g+"Hours"](),u=a[g+"Minutes"](),q=a[g+"Seconds"](),g=a[g+"Milliseconds"](),r=d?0:a.getTimezoneOffset(),t={d:k,dd:h(k),ddd:b.i18n.dayNames[l],dddd:b.i18n.dayNames[l+7],m:m+1,mm:h(m+1),mmm:b.i18n.monthNames[m],mmmm:b.i18n.monthNames[m+
-12],yy:String(p).slice(2),yyyy:p,h:n%12||12,hh:h(n%12||12),H:n,HH:h(n),M:u,MM:h(u),s:q,ss:h(q),l:h(g,3),L:h(99<g?Math.round(g/10):g),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:d?"UTC":(String(a).match(f)||[""]).pop().replace(e,""),o:(0<r?"-":"+")+h(100*Math.floor(Math.abs(r)/60)+Math.abs(r)%60,4),S:["th","st","nd","rd"][3<k%10?0:(10!=k%100-k%10)*k%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in t?t[a]:a.slice(1,
+/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(b.masks[c]||c||b.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),d=!0);var g=d?"getUTC":"get",k=a[g+"Date"](),l=a[g+"Day"](),m=a[g+"Month"](),p=a[g+"FullYear"](),n=a[g+"Hours"](),u=a[g+"Minutes"](),r=a[g+"Seconds"](),g=a[g+"Milliseconds"](),q=d?0:a.getTimezoneOffset(),t={d:k,dd:h(k),ddd:b.i18n.dayNames[l],dddd:b.i18n.dayNames[l+7],m:m+1,mm:h(m+1),mmm:b.i18n.monthNames[m],mmmm:b.i18n.monthNames[m+
+12],yy:String(p).slice(2),yyyy:p,h:n%12||12,hh:h(n%12||12),H:n,HH:h(n),M:u,MM:h(u),s:r,ss:h(r),l:h(g,3),L:h(99<g?Math.round(g/10):g),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:d?"UTC":(String(a).match(f)||[""]).pop().replace(e,""),o:(0<q?"-":"+")+h(100*Math.floor(Math.abs(q)/60)+Math.abs(q)%60,4),S:["th","st","nd","rd"][3<k%10?0:(10!=k%100-k%10)*k%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in t?t[a]:a.slice(1,
 a.length-1)})};
 Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var c=this.getModel(),d=c.getChildCount(c.root),b=0;b<d;b++)mxUtils.bind(this,function(b){var d=document.createElement("div");d.style.overflow="hidden";d.style.textOverflow="ellipsis";d.style.padding="2px";d.style.whiteSpace="nowrap";var f=document.createElement("input");f.style.display="inline-block";f.setAttribute("type","checkbox");c.isVisible(b)&&(f.setAttribute("checked","checked"),
 f.defaultChecked=!0);d.appendChild(f);var g=this.convertValueToString(b)||mxResources.get("background")||"Background";d.setAttribute("title",g);mxUtils.write(d,g);a.appendChild(d);mxEvent.addListener(f,"click",function(){null!=f.getAttribute("checked")?f.removeAttribute("checked"):f.setAttribute("checked","checked");c.setVisible(b,f.checked)})})(c.getChildAt(c.root,b));return a};
@@ -2486,9 +2489,9 @@ Graph.prototype.selectCellsForConnectVertex=function(a,c,d){2==a.length&&this.mo
 Graph.prototype.connectVertex=function(a,c,d,b,f,e){e=e?e:!1;var h=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(a.geometry.x,a.geometry.y);c==mxConstants.DIRECTION_NORTH?(h.x+=a.geometry.width/2,h.y-=d):c==mxConstants.DIRECTION_SOUTH?(h.x+=a.geometry.width/2,h.y+=a.geometry.height+d):(h.x=c==mxConstants.DIRECTION_WEST?h.x-d:h.x+(a.geometry.width+d),h.y+=a.geometry.height/2);d=this.view.getState(this.model.getParent(a));
 var g=this.view.scale,k=this.view.translate,l=k.x*g,k=k.y*g;null!=d&&this.model.isVertex(d.cell)&&(l=d.x,k=d.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(h.x+=a.parent.geometry.x,h.y+=a.parent.geometry.y);e=e||mxEvent.isControlDown(b)&&!f?null:this.getCellAt(l+h.x*g,k+h.y*g);this.model.isAncestor(e,a)&&(e=null);for(d=e;null!=d;){if(this.isCellLocked(d)){e=null;break}d=this.model.getParent(d)}null!=e&&(d=this.view.getState(a),g=this.view.getState(e),null!=d&&null!=g&&mxUtils.intersects(d,
 g)&&(e=null));if(f=!mxEvent.isShiftDown(b)||f)c==mxConstants.DIRECTION_NORTH?h.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?h.y+=a.geometry.height/2:h.x=c==mxConstants.DIRECTION_WEST?h.x-a.geometry.width/2:h.x+a.geometry.width/2;null==e||this.isCellConnectable(e)||(d=this.getModel().getParent(e),this.getModel().isVertex(d)&&this.isCellConnectable(d)&&(e=d));if(e==a||this.model.isEdge(e)||!this.isCellConnectable(e))e=null;d=[];this.model.beginUpdate();try{g=e;if(null==g&&f){for(var l=a,m=
-this.getCellGeometry(a);null!=m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var p=this.view.getState(l),n=null!=p?p.style:this.getCellStyle(l);if(mxUtils.getValue(n,"part",!1)){var u=this.model.getParent(l);this.model.isVertex(u)&&(l=u)}g=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(g);null!=m&&(m.x=h.x-m.width/2,m.y=h.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var q=mxEvent.isControlDown(b)&&f||null==
-e&&null!=m&&m.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,g,this.createCurrentEdgeStyle());if(null!=q&&this.connectionHandler.insertBeforeSource){var r=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=q.parent;)b=this.model.getParent(b);null!=b&&null!=b.parent&&b.parent==q.parent&&(r=b.parent.getIndex(b),this.model.add(b.parent,q,r))}null==e&&null!=g&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&
-(r=a.parent.getIndex(a),this.model.add(a.parent,g,r));null!=q&&d.push(q);null==e&&null!=g&&d.push(g);null==g&&null!=q&&q.geometry.setTerminalPoint(h,!1);null!=q&&this.fireEvent(new mxEventObject("cellsInserted","cells",[q]))}finally{this.model.endUpdate()}return d};
+this.getCellGeometry(a);null!=m&&m.relative;)l=this.getModel().getParent(l),m=this.getCellGeometry(l);var p=this.view.getState(l),n=null!=p?p.style:this.getCellStyle(l);if(mxUtils.getValue(n,"part",!1)){var u=this.model.getParent(l);this.model.isVertex(u)&&(l=u)}g=this.duplicateCells([l],!1)[0];m=this.getCellGeometry(g);null!=m&&(m.x=h.x-m.width/2,m.y=h.y-m.height/2)}m=null;null!=this.layoutManager&&(m=this.layoutManager.getLayout(this.model.getParent(a)));var r=mxEvent.isControlDown(b)&&f||null==
+e&&null!=m&&m.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,g,this.createCurrentEdgeStyle());if(null!=r&&this.connectionHandler.insertBeforeSource){var q=null;for(b=a;null!=b.parent&&null!=b.geometry&&b.geometry.relative&&b.parent!=r.parent;)b=this.model.getParent(b);null!=b&&null!=b.parent&&b.parent==r.parent&&(q=b.parent.getIndex(b),this.model.add(b.parent,r,q))}null==e&&null!=g&&null!=m&&null!=a.parent&&m.constructor==mxStackLayout&&c==mxConstants.DIRECTION_WEST&&
+(q=a.parent.getIndex(a),this.model.add(a.parent,g,q));null!=r&&d.push(r);null==e&&null!=g&&d.push(g);null==g&&null!=r&&r.geometry.setTerminalPoint(h,!1);null!=r&&this.fireEvent(new mxEventObject("cellsInserted","cells",[r]))}finally{this.model.endUpdate()}return d};
 Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),c=[],d,b;for(b in this.model.cells)if(d=this.model.cells[b],this.model.isVertex(d)||this.model.isEdge(d))this.isHtmlLabel(d)?(a.innerHTML=this.getLabel(d),d=mxUtils.extractTextWithWhitespace([a])):d=this.getLabel(d),d=mxUtils.trim(d.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<d.length&&c.push(d);return c.join(" ")};
 Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var c=a.getAttribute("placeholder"),d=a,b=null;null==b&&null!=d;)null!=d.value&&"object"==typeof d.value&&(b=d.hasAttribute(c)?null!=d.getAttribute(c)?d.getAttribute(c):"":null),d=this.model.getParent(d);return b||""}return a.value.getAttribute("label")||""}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};
@@ -2541,12 +2544,12 @@ this.setDisplay("");null!=this.currentState&&this.currentState!=a&&b<this.activa
 this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};
 (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,b){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=c.apply(this,arguments);null!=
 d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return d.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var b=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){b.apply(this,arguments);this.graph.model.isEdge(a.cell)&&
-1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var g=new mxPoint(c,e);g.type=b;d.push(g);g=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==g||g.type!=b||g.x!=c||g.y!=e},g=.5*this.scale,c=!1,d=[],f=0;f<b.length-1;f++){for(var h=
-b[f+1],k=b[f],w=[],v=b[f+2];f<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,v.x,v.y,h.x,h.y)<1*this.scale*this.scale;)h=v,f++,v=b[f+2];for(var c=e(0,k.x,k.y)||c,z=0;z<this.validEdges.length;z++){var x=this.validEdges[z],E=x.absolutePoints;if(null!=E&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<E.length-1;x++){for(var D=E[x+1],F=E[x],v=E[x+2];x<E.length-2&&mxUtils.ptSegDistSq(F.x,F.y,v.x,v.y,D.x,D.y)<1*this.scale*this.scale;)D=v,x++,v=E[x+2];v=mxUtils.intersection(k.x,k.y,h.x,h.y,F.x,F.y,D.x,
-D.y);if(null!=v&&(Math.abs(v.x-F.x)>g||Math.abs(v.y-F.y)>g)&&(Math.abs(v.x-D.x)>g||Math.abs(v.y-D.y)>g)){D=v.x-k.x;F=v.y-k.y;v={distSq:D*D+F*F,x:v.x,y:v.y};for(D=0;D<w.length;D++)if(w[D].distSq>v.distSq){w.splice(D,0,v);v=null;break}null==v||0!=w.length&&w[w.length-1].x===v.x&&w[w.length-1].y===v.y||w.push(v)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}v=b[b.length-1];c=e(0,v.x,v.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,
+1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,d=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(b,c,e){var g=new mxPoint(c,e);g.type=b;d.push(g);g=null!=a.routedPoints?a.routedPoints[d.length-1]:null;return null==g||g.type!=b||g.x!=c||g.y!=e},g=.5*this.scale,c=!1,d=[],f=0;f<b.length-1;f++){for(var k=
+b[f+1],h=b[f],w=[],v=b[f+2];f<b.length-2&&mxUtils.ptSegDistSq(h.x,h.y,v.x,v.y,k.x,k.y)<1*this.scale*this.scale;)k=v,f++,v=b[f+2];for(var c=e(0,h.x,h.y)||c,z=0;z<this.validEdges.length;z++){var x=this.validEdges[z],F=x.absolutePoints;if(null!=F&&mxUtils.intersects(a,x)&&"1"!=x.style.noJump)for(x=0;x<F.length-1;x++){for(var C=F[x+1],E=F[x],v=F[x+2];x<F.length-2&&mxUtils.ptSegDistSq(E.x,E.y,v.x,v.y,C.x,C.y)<1*this.scale*this.scale;)C=v,x++,v=F[x+2];v=mxUtils.intersection(h.x,h.y,k.x,k.y,E.x,E.y,C.x,
+C.y);if(null!=v&&(Math.abs(v.x-E.x)>g||Math.abs(v.y-E.y)>g)&&(Math.abs(v.x-C.x)>g||Math.abs(v.y-C.y)>g)){C=v.x-h.x;E=v.y-h.y;v={distSq:C*C+E*E,x:v.x,y:v.y};for(C=0;C<w.length;C++)if(w[C].distSq>v.distSq){w.splice(C,0,v);v=null;break}null==v||0!=w.length&&w[w.length-1].x===v.x&&w[w.length-1].y===v.y||w.push(v)}}}for(x=0;x<w.length;x++)c=e(1,w[x].x,w[x].y)||c}v=b[b.length-1];c=e(0,v.x,v.y)||c}a.routedPoints=d;return c}return!1};var f=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,
 b,c){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)f.apply(this,arguments);else{var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,g=mxUtils.getValue(this.style,"jumpStyle","none"),h,k=!0,l=null,m=null;h=[];var v=null;a.begin();for(var z=
-0;z<this.state.routedPoints.length;z++){var x=this.state.routedPoints[z],E=new mxPoint(x.x/this.scale,x.y/this.scale);0==z?E=b[0]:z==this.state.routedPoints.length-1&&(E=b[b.length-1]);var D=!1;if(null!=l&&1==x.type){var F=this.state.routedPoints[z+1],x=F.x/this.scale-E.x,F=F.y/this.scale-E.y,x=x*x+F*F;null==v&&(v=new mxPoint(E.x-l.x,E.y-l.y),m=Math.sqrt(v.x*v.x+v.y*v.y),v.x=v.x*e/m,v.y=v.y*e/m);x>e*e&&0<m&&(x=l.x-E.x,F=l.y-E.y,x=x*x+F*F,x>e*e&&(D=new mxPoint(E.x-v.x,E.y-v.y),x=new mxPoint(E.x+v.x,
-E.y+v.y),h.push(D),this.addPoints(a,h,c,d,!1,null,k),h=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(D.x-v.y*h,D.y+v.x*h),a.lineTo(x.x-v.y*h,x.y+v.x*h),a.lineTo(x.x,x.y)):"arc"==g?(h*=1.3,a.curveTo(D.x-v.y*h,D.y+v.x*h,x.x-v.y*h,x.y+v.x*h,x.x,x.y)):(a.moveTo(x.x,x.y),k=!0),h=[x],D=!0))}else v=null;D||(h.push(E),l=E)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=
+0;z<this.state.routedPoints.length;z++){var x=this.state.routedPoints[z],F=new mxPoint(x.x/this.scale,x.y/this.scale);0==z?F=b[0]:z==this.state.routedPoints.length-1&&(F=b[b.length-1]);var C=!1;if(null!=l&&1==x.type){var E=this.state.routedPoints[z+1],x=E.x/this.scale-F.x,E=E.y/this.scale-F.y,x=x*x+E*E;null==v&&(v=new mxPoint(F.x-l.x,F.y-l.y),m=Math.sqrt(v.x*v.x+v.y*v.y),v.x=v.x*e/m,v.y=v.y*e/m);x>e*e&&0<m&&(x=l.x-F.x,E=l.y-F.y,x=x*x+E*E,x>e*e&&(C=new mxPoint(F.x-v.x,F.y-v.y),x=new mxPoint(F.x+v.x,
+F.y+v.y),h.push(C),this.addPoints(a,h,c,d,!1,null,k),h=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,k=!1,"sharp"==g?(a.lineTo(C.x-v.y*h,C.y+v.x*h),a.lineTo(x.x-v.y*h,x.y+v.x*h),a.lineTo(x.x,x.y)):"arc"==g?(h*=1.3,a.curveTo(C.x-v.y*h,C.y+v.x*h,x.x-v.y*h,x.y+v.x*h,x.x,x.y)):(a.moveTo(x.x,x.y),k=!0),h=[x],C=!0))}else v=null;C||(h.push(F),l=F)}this.addPoints(a,h,c,d,!1,null,k);a.stroke()}};var e=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=
 function(a,b,c,d){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)e.apply(this,arguments);else{b=this.getTerminalPort(a,b,d);var g=this.getNextPoint(a,c,d),f=this.graph.isOrthogonal(a),h=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),k=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=h)var l=Math.cos(-h),m=Math.sin(-h),g=mxUtils.getRotatedPoint(g,l,m,k);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);l+=parseFloat(a.style[d?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:
 mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);g=this.getPerimeterPoint(b,g,0==h&&f,l);0!=h&&(l=Math.cos(h),m=Math.sin(h),g=mxUtils.getRotatedPoint(g,l,m,k));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,d,g),d)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,d,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);d=c=null;if(null!=a)for(var g=0;g<a.length;g++){var f=this.graph.getConnectionPoint(b,a[g]);if(null!=f){var h=(f.x-e.x)*(f.x-e.x)+(f.y-e.y)*(f.y-e.y);if(null==
 d||h<d)c=f,d=h}}null!=c&&(e=c)}return e};var h=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var d=h.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(d=c.state.view.graph.replacePlaceholders(c.state.cell,d));return d};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=
@@ -2571,8 +2574,8 @@ if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var f=this.getBoundi
 b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget=
 function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&&
 null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate();try{for(var d=
-0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,q=null!=p?this.getConnectionConstraint(m,
-p,!1):null;this.setConnectionConstraint(e,g,!0,q);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var r=this.view.getState(e);if(null!=r){var t=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==t?t="south":"south"==t?t="west":"west"==t?t="north":"north"==t&&(t="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
+0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,r=null!=p?this.getConnectionConstraint(m,
+p,!1):null;this.setConnectionConstraint(e,g,!0,r);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var q=this.view.getState(e);if(null!=q){var t=q.style[mxConstants.STYLE_DIRECTION]||"east";"east"==t?t="south":"south"==t?t="west":"west"==t?t="north":"north"==t&&(t="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
 t,[e])}c.push(e)}}}finally{b.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var b=this.model.getDescendants(a.cell);if(0<b.length)for(var c=
 0;c<b.length;c++){var d=this.view.getState(b[c]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(b[c]):this.isReplacePlaceholders(b[c])&&this.view.invalidate(b[c],!1,!1)}}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)};
 Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var g=this.convertValueToString(a[e]);if(null!=g&&0<g.length){d.innerHTML=g;for(var f=d.getElementsByTagName(null!=c?c:"*"),h=0;h<f.length;h++)b(f[h]);d.innerHTML!=g&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,c){b=this.zapGremlins(b);this.model.beginUpdate();try{if(null!=a.value&&
@@ -2600,11 +2603,11 @@ Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells
 try{for(var k=(d-e)/(c.length-1),d=e,g=1;g<c.length-1;g++){var l=this.view.getState(this.model.getParent(c[g].cell)),m=this.getCellGeometry(c[g].cell),d=d+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(d-m.width/2)-l.origin.x:m.y=Math.round(d-m.height/2)-l.origin.y,this.getModel().setGeometry(c[g].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=
 function(a){for(var b=this.cloneCells(a),c=new mxDictionary,d=0;d<a.length;d++)c.put(a[d],!0);for(d=0;d<b.length;d++){var e=this.view.getState(a[d]);if(null!=e){var g=this.getCellGeometry(b[d]);null==g||!g.relative||this.model.isEdge(a[d])||c.get(this.model.getParent(a[d]))||(g.relative=!1,g.x=e.x/e.view.scale-e.view.translate.x,g.y=e.y/e.view.scale-e.view.translate.y)}}c=new mxCodec;e=new mxGraphModel;g=e.getChildAt(e.getRoot(),0);for(d=0;d<a.length;d++)e.add(g,b[d]);return c.encode(e)};Graph.prototype.createSvgImageExport=
 function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,b,c,d,e,g,f,h,k,l){var m=this.useCssTransforms;m&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{b=null!=b?b:1;c=null!=c?c:0;e=null!=e?e:!0;g=null!=g?g:!0;f=null!=f?f:!0;var A=g||d?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==A)throw Error(mxResources.get("drawingEmpty"));
-var p=this.view.scale,n=mxUtils.createXmlDocument(),B=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"svg"):n.createElement("svg");null!=a&&(null!=B.style?B.style.backgroundColor=a:B.setAttribute("style","background-color:"+a));null==n.createElementNS?(B.setAttribute("xmlns",mxConstants.NS_SVG),B.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):B.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var q=Math.max(1,Math.ceil(A.width*a)+2*c)+(l?5:
-0),u=Math.max(1,Math.ceil(A.height*a)+2*c)+(l?5:0);B.setAttribute("version","1.1");B.setAttribute("width",q+"px");B.setAttribute("height",u+"px");B.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+u);n.appendChild(B);var I=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"g"):n.createElement("g");B.appendChild(I);var r=this.createSvgCanvas(I);r.foOffset=e?-.5:0;r.textOffset=e?-.5:0;r.imageOffset=e?-.5:0;r.translate(Math.floor((c/b-A.x)/p),Math.floor((c/b-A.y)/p));var t=document.createElement("textarea"),
-w=r.createAlternateContent;r.createAlternateContent=function(a,b,c,d,e,g,f,h,k,l,m,A,p){var B=this.state;if(null!=this.foAltText&&(0==d||0!=B.fontSize&&g.length<5*d/B.fontSize)){var n=this.createElement("text");n.setAttribute("x",Math.round(d/2));n.setAttribute("y",Math.round((e+B.fontSize)/2));n.setAttribute("fill",B.fontColor||"black");n.setAttribute("text-anchor","middle");n.setAttribute("font-size",Math.round(B.fontSize)+"px");n.setAttribute("font-family",B.fontFamily);(B.fontStyle&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD&&n.setAttribute("font-weight","bold");(B.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&n.setAttribute("font-style","italic");(B.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&n.setAttribute("text-decoration","underline");try{return t.innerHTML=g,n.textContent=t.value,n}catch(ha){return w.apply(this,arguments)}}else return w.apply(this,arguments)};var v=this.backgroundImage;if(null!=v){b=p/b;var x=this.view.translate,T=new mxRectangle(x.x*b,
-x.y*b,v.width*b,v.height*b);mxUtils.intersects(A,T)&&r.image(x.x,x.y,v.width,v.height,v.src,!0)}r.scale(a);r.textEnabled=f;h=null!=h?h:this.createSvgImageExport();var E=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!g&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(g||d)&&E.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),r);this.updateSvgLinks(B,k,!0);return B}finally{m&&(this.useCssTransforms=
+var p=this.view.scale,n=mxUtils.createXmlDocument(),B=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"svg"):n.createElement("svg");null!=a&&(null!=B.style?B.style.backgroundColor=a:B.setAttribute("style","background-color:"+a));null==n.createElementNS?(B.setAttribute("xmlns",mxConstants.NS_SVG),B.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):B.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=b/p;var r=Math.max(1,Math.ceil(A.width*a)+2*c)+(l?5:
+0),u=Math.max(1,Math.ceil(A.height*a)+2*c)+(l?5:0);B.setAttribute("version","1.1");B.setAttribute("width",r+"px");B.setAttribute("height",u+"px");B.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+r+" "+u);n.appendChild(B);var I=null!=n.createElementNS?n.createElementNS(mxConstants.NS_SVG,"g"):n.createElement("g");B.appendChild(I);var q=this.createSvgCanvas(I);q.foOffset=e?-.5:0;q.textOffset=e?-.5:0;q.imageOffset=e?-.5:0;q.translate(Math.floor((c/b-A.x)/p),Math.floor((c/b-A.y)/p));var t=document.createElement("textarea"),
+w=q.createAlternateContent;q.createAlternateContent=function(a,b,c,d,e,g,f,h,k,l,m,A,p){var B=this.state;if(null!=this.foAltText&&(0==d||0!=B.fontSize&&g.length<5*d/B.fontSize)){var n=this.createElement("text");n.setAttribute("x",Math.round(d/2));n.setAttribute("y",Math.round((e+B.fontSize)/2));n.setAttribute("fill",B.fontColor||"black");n.setAttribute("text-anchor","middle");n.setAttribute("font-size",Math.round(B.fontSize)+"px");n.setAttribute("font-family",B.fontFamily);(B.fontStyle&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD&&n.setAttribute("font-weight","bold");(B.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&n.setAttribute("font-style","italic");(B.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&n.setAttribute("text-decoration","underline");try{return t.innerHTML=g,n.textContent=t.value,n}catch(ha){return w.apply(this,arguments)}}else return w.apply(this,arguments)};var x=this.backgroundImage;if(null!=x){b=p/b;var v=this.view.translate,T=new mxRectangle(v.x*b,
+v.y*b,x.width*b,x.height*b);mxUtils.intersects(A,T)&&q.image(v.x,v.y,x.width,x.height,x.src,!0)}q.scale(a);q.textEnabled=f;h=null!=h?h:this.createSvgImageExport();var z=h.drawCellState;h.drawCellState=function(a,b){for(var c=a.view.graph,d=c.isCellSelected(a.cell),e=c.model.getParent(a.cell);!g&&!d&&null!=e;)d=c.isCellSelected(e),e=c.model.getParent(e);(g||d)&&z.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),q);this.updateSvgLinks(B,k,!0);return B}finally{m&&(this.useCssTransforms=
 !0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,b,c){a=a.getElementsByTagName("a");for(var d=0;d<a.length;d++){var e=a[d].getAttribute("href");null==e&&(e=a[d].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[d].setAttribute("target",b):c&&this.isCustomLink(e)&&a[d].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=
 null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,b,c){for(;null!=a&&a.nodeName!=b;){if(a==c)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var b=null;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){var c=document.createRange();c.selectNode(a);
 b.removeAllRanges();b.addRange(c)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),c=b.createRange(),c.setEndPoint("StartToStart",a),c.select())};Graph.prototype.insertRow=function(a,b){for(var c=a.tBodies[0],d=c.rows[0].cells,e=0,g=0;g<d.length;g++)var f=d[g].getAttribute("colspan"),e=e+(null!=f?parseInt(f):1);c=c.insertRow(b);for(g=0;g<e;g++)mxUtils.br(c.insertCell(-1));return c.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=
@@ -2655,15 +2658,15 @@ this.y,this.width,this.height),h=this.graph.getCells(g.x,g.y,g.width,g.height);t
 new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(g,b.getEvent());b.consume()}};mxRubberband.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.first){var c=mxUtils.getScrollOrigin(this.graph.container),d=mxUtils.getOffset(this.graph.container);c.x-=d.x;c.y-=d.y;var d=b.getX()+c.x,c=b.getY()+c.y,e=this.first.x-d,g=this.first.y-c,f=this.graph.tolerance;if(null!=this.div||Math.abs(e)>f||Math.abs(g)>f)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),
 this.update(d,c),this.isSpaceEvent(b)?(d=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(b.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=d-this.width),this.y<this.first.y&&(this.y=c-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor=
 "white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+
-"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),b.consume()}};var q=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null);q.apply(this,arguments)};var r=(new Date).getTime(),t=0,w=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){w.apply(this,arguments);c!=this.currentTerminalState?(r=(new Date).getTime(),t=0):t=(new Date).getTime()-r;this.currentTerminalState=c};var v=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
+"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)),b.consume()}};var r=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
+this.secondDiv=null);r.apply(this,arguments)};var q=(new Date).getTime(),t=0,w=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,b,c,d){w.apply(this,arguments);c!=this.currentTerminalState?(q=(new Date).getTime(),t=0):t=(new Date).getTime()-q;this.currentTerminalState=c};var v=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
 2E3<t||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&v.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,b){var c=null!=a&&0==a,d=this.state.getVisibleTerminalState(c),e=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,
 d,c):null,c=null!=(null!=e?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(c),e):null)?this.fixedHandleImage:null!=e&&null!=d?this.terminalHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var z=mxVertexHandler.prototype.createSizerShape;
 mxVertexHandler.prototype.createSizerShape=function(a,b,c){this.handleImage=b==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:b==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return z.apply(this,arguments)};var x=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var b=this.graph.getModel(),c=b.getParent(a[0]),d=this.graph.getCellGeometry(a[0]);if(b.isEdge(c)&&null!=d&&d.relative&&(b=this.graph.view.getState(a[0]),
-null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return x.apply(this,arguments)};var E=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox,
-new mxRectangle(Math.round(b.x),Math.round(b.y),Math.round(b.width),Math.round(b.height))):E.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,b){var c=this.graph.getModel(),d=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(b)==mxEvent.ROTATION_HANDLE||!c.isEdge(d)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=
-function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var F=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,b){F.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!=
-this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var C=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,b){C.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var M=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){M.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",
+null!=b&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox))return mxRectangle.fromRectangle(b.text.boundingBox)}return x.apply(this,arguments)};var F=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var b=this.graph.getModel(),c=b.getParent(a.cell),d=this.graph.getCellGeometry(a.cell);return b.isEdge(c)&&null!=d&&d.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(b=a.text.unrotatedBoundingBox||a.text.boundingBox,
+new mxRectangle(Math.round(b.x),Math.round(b.y),Math.round(b.width),Math.round(b.height))):F.apply(this,arguments)};var C=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,b){var c=this.graph.getModel(),d=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(b)==mxEvent.ROTATION_HANDLE||!c.isEdge(d)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&C.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=
+function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var E=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,b){E.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!=
+this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var D=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,b){D.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var M=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){M.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",
 mxResources.get("rotateTooltip"));var b=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,c){b()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,
 this.selectionHandler);this.changeHandler=mxUtils.bind(this,function(a,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,b){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var c=this.graph.getLinkForCell(this.state.cell),d=this.graph.getLinksForState(this.state);this.updateLinkHint(c,
 d);if(null!=c||null!=d&&0<d.length)a=!0;a&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(b,c){if(null==b&&(null==c||0==c.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=b||null!=c&&0<c.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));
@@ -2696,8 +2699,8 @@ a,d));else{var f=this.getSelectionState().containsLabel,e=null,h=null,c=mxUtils.
 "mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));c==(f?this.labelIndex:this.currentIndex)&&d()}),g=0;b.style.backgroundColor=this.inactiveTabBackgroundColor;b.style.borderLeftWidth="1px";b.style.cursor="pointer";b.style.width=f?"50%":"33.3%";b.style.width=f?"50%":"33.3%";var k=b.cloneNode(!1),l=k.cloneNode(!1);k.style.backgroundColor=this.inactiveTabBackgroundColor;l.style.backgroundColor=this.inactiveTabBackgroundColor;if(f)k.style.borderLeftWidth="0px";else{b.style.borderLeftWidth=
 "0px";mxUtils.write(b,mxResources.get("style"));d.appendChild(b);var m=d.cloneNode(!1);m.style.display="none";this.panels.push(new StyleFormatPanel(this,a,m));this.container.appendChild(m);c(b,m,g++)}mxUtils.write(k,mxResources.get("text"));d.appendChild(k);b=d.cloneNode(!1);b.style.display="none";this.panels.push(new TextFormatPanel(this,a,b));this.container.appendChild(b);mxUtils.write(l,mxResources.get("arrange"));d.appendChild(l);d=d.cloneNode(!1);d.style.display="none";this.panels.push(new ArrangePanel(this,
 a,d));this.container.appendChild(d);c(k,b,g++);c(l,d,g++)}}};BaseFormatPanel=function(a,c,d){this.format=a;this.editorUi=c;this.container=d;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";BaseFormatPanel.prototype.getSelectionState=function(){for(var a=this.editorUi.editor.graph,c=a.getSelectionCells(),d=null,b=0;b<c.length;b++){var f=a.view.getState(c[b]);if(null!=f&&(f=mxUtils.getValue(f.style,mxConstants.STYLE_SHAPE,null),null!=f))if(null==d)d=f;else if(d!=f)return null}return d};
-BaseFormatPanel.prototype.installInputHandler=function(a,c,d,b,f,e,h,g){e=null!=e?e:"";g=null!=g?g:!1;var k=this.editorUi,l=k.editor.graph;b=null!=b?b:1;f=null!=f?f:999;var m=null,p=!1,n=mxUtils.bind(this,function(n){var q=g?parseFloat(a.value):parseInt(a.value);isNaN(q)||c!=mxConstants.STYLE_ROTATION||(q=mxUtils.mod(Math.round(100*q),36E3)/100);q=Math.min(f,Math.max(b,isNaN(q)?d:q));if(l.cellEditor.isContentEditing()&&h)p||(p=!0,null!=m&&(l.cellEditor.restoreSelection(m),m=null),h(q),a.value=q+e,
-p=!1);else if(q!=mxUtils.getValue(this.format.getSelectionState().style,c,d)){l.isEditing()&&l.stopEditing(!0);l.getModel().beginUpdate();try{l.setCellStyles(c,q,l.getSelectionCells()),c==mxConstants.STYLE_FONTSIZE&&l.updateLabelElements(l.getSelectionCells(),function(a){a.style.fontSize=q+"px";a.removeAttribute("size")}),k.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[q],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}a.value=q+e;mxEvent.consume(n)});h&&l.cellEditor.isContentEditing()&&
+BaseFormatPanel.prototype.installInputHandler=function(a,c,d,b,f,e,h,g){e=null!=e?e:"";g=null!=g?g:!1;var k=this.editorUi,l=k.editor.graph;b=null!=b?b:1;f=null!=f?f:999;var m=null,p=!1,n=mxUtils.bind(this,function(n){var r=g?parseFloat(a.value):parseInt(a.value);isNaN(r)||c!=mxConstants.STYLE_ROTATION||(r=mxUtils.mod(Math.round(100*r),36E3)/100);r=Math.min(f,Math.max(b,isNaN(r)?d:r));if(l.cellEditor.isContentEditing()&&h)p||(p=!0,null!=m&&(l.cellEditor.restoreSelection(m),m=null),h(r),a.value=r+e,
+p=!1);else if(r!=mxUtils.getValue(this.format.getSelectionState().style,c,d)){l.isEditing()&&l.stopEditing(!0);l.getModel().beginUpdate();try{l.setCellStyles(c,r,l.getSelectionCells()),c==mxConstants.STYLE_FONTSIZE&&l.updateLabelElements(l.getSelectionCells(),function(a){a.style.fontSize=r+"px";a.removeAttribute("size")}),k.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[r],"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}a.value=r+e;mxEvent.consume(n)});h&&l.cellEditor.isContentEditing()&&
 (mxEvent.addListener(a,"mousedown",function(){document.activeElement==l.cellEditor.textarea&&(m=l.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==l.cellEditor.textarea&&(m=l.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",n);mxEvent.addListener(a,"blur",n);return n};BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.style.padding="12px 0px 12px 18px";a.style.borderBottom="1px solid #c0c0c0";return a};
 BaseFormatPanel.prototype.createTitle=function(a){var c=document.createElement("div");c.style.padding="0px 0px 6px 0px";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.width="200px";c.style.fontWeight="bold";mxUtils.write(c,a);return c};
 BaseFormatPanel.prototype.createStepper=function(a,c,d,b,f,e){d=null!=d?d:1;b=null!=b?b:8;if(mxClient.IS_QUIRKS)b-=2;else if(mxClient.IS_MT||8<=document.documentMode)b+=1;var h=document.createElement("div");mxUtils.setPrefixedStyle(h.style,"borderRadius","3px");h.style.border="1px solid rgb(192, 192, 192)";h.style.position="absolute";var g=document.createElement("div");g.style.borderBottom="1px solid rgb(192, 192, 192)";g.style.position="relative";g.style.height=b+"px";g.style.width="10px";g.className=
@@ -2745,34 +2748,34 @@ ArrangePanel.prototype.addAngle=function(a){var c=this.editorUi,d=c.editor.graph
 a=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)),e.value=isNaN(a)?"":a+"°"}),h=this.installInputHandler(e,mxConstants.STYLE_ROTATION,0,0,360,"°",null,!0);this.addKeyHandler(e,k);d.getModel().addListener(mxEvent.CHANGE,k);this.listeners.push({destroy:function(){d.getModel().removeListener(k)}});k()}return a};
 ArrangePanel.prototype.addGeometry=function(a){var c=this.editorUi,d=c.editor.graph,b=this.format.getSelectionState(),f=this.createPanel();f.style.paddingBottom="8px";var e=document.createElement("div");e.style.position="absolute";e.style.width="50px";e.style.marginTop="0px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("size"));f.appendChild(e);var h,g,k,l,m=this.addUnitInput(f,"pt",84,44,function(){h.apply(this,arguments)}),p=this.addUnitInput(f,"pt",20,44,function(){g.apply(this,arguments)}),
 n=document.createElement("div");n.className="geSprite geSprite-fit";n.setAttribute("title",mxResources.get("autosize")+" ("+this.editorUi.actions.get("autosize").shortcut+")");n.style.position="relative";n.style.cursor="pointer";n.style.marginTop="-3px";n.style.border="0px";n.style.left="52px";mxUtils.setOpacity(n,50);mxEvent.addListener(n,"mouseenter",function(){mxUtils.setOpacity(n,100)});mxEvent.addListener(n,"mouseleave",function(){mxUtils.setOpacity(n,50)});mxEvent.addListener(n,"click",function(){c.actions.get("autosize").funct()});
-f.appendChild(n);this.addLabel(f,mxResources.get("width"),84);this.addLabel(f,mxResources.get("height"),20);mxUtils.br(f);e=document.createElement("div");e.style.paddingTop="8px";e.style.paddingRight="20px";e.style.whiteSpace="nowrap";e.style.textAlign="right";var u=this.createCellOption(mxResources.get("constrainProportions"),mxConstants.STYLE_ASPECT,null,"fixed","null");u.style.width="100%";e.appendChild(u);f.appendChild(e);var q=u.getElementsByTagName("input")[0];this.addKeyHandler(m,v);this.addKeyHandler(p,
-v);h=this.addGeometryHandler(m,function(a,b){0<a.width&&(b=Math.max(1,b),q.checked&&(a.height=Math.round(a.height*b*100/a.width)/100),a.width=b)});g=this.addGeometryHandler(p,function(a,b){0<a.height&&(b=Math.max(1,b),q.checked&&(a.width=Math.round(a.width*b*100/a.height)/100),a.height=b)});a.appendChild(f);var r=this.createPanel();r.style.paddingBottom="30px";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("position"));r.appendChild(e);var t=this.addUnitInput(r,"pt",84,44,function(){k.apply(this,arguments)}),w=this.addUnitInput(r,"pt",20,44,function(){l.apply(this,arguments)});mxUtils.br(r);this.addLabel(r,mxResources.get("left"),84);this.addLabel(r,mxResources.get("top"),20);var v=mxUtils.bind(this,function(a,c,e){b=this.format.getSelectionState();if(b.containsLabel||b.vertices.length!=d.getSelectionCount()||null==b.width||null==b.height)f.style.display="none";else{f.style.display=
-"";if(e||document.activeElement!=m)m.value=b.width+(""==b.width?"":" pt");if(e||document.activeElement!=p)p.value=b.height+(""==b.height?"":" pt")}if(b.vertices.length==d.getSelectionCount()&&null!=b.x&&null!=b.y){r.style.display="";if(e||document.activeElement!=t)t.value=b.x+(""==b.x?"":" pt");if(e||document.activeElement!=w)w.value=b.y+(""==b.y?"":" pt")}else r.style.display="none"});this.addKeyHandler(t,v);this.addKeyHandler(w,v);d.getModel().addListener(mxEvent.CHANGE,v);this.listeners.push({destroy:function(){d.getModel().removeListener(v)}});
-v();k=this.addGeometryHandler(t,function(a,b){a.relative?a.offset.x=b:a.x=b});l=this.addGeometryHandler(w,function(a,b){a.relative?a.offset.y=b:a.y=b});a.appendChild(r)};
+f.appendChild(n);this.addLabel(f,mxResources.get("width"),84);this.addLabel(f,mxResources.get("height"),20);mxUtils.br(f);e=document.createElement("div");e.style.paddingTop="8px";e.style.paddingRight="20px";e.style.whiteSpace="nowrap";e.style.textAlign="right";var u=this.createCellOption(mxResources.get("constrainProportions"),mxConstants.STYLE_ASPECT,null,"fixed","null");u.style.width="100%";e.appendChild(u);f.appendChild(e);var r=u.getElementsByTagName("input")[0];this.addKeyHandler(m,v);this.addKeyHandler(p,
+v);h=this.addGeometryHandler(m,function(a,b){0<a.width&&(b=Math.max(1,b),r.checked&&(a.height=Math.round(a.height*b*100/a.width)/100),a.width=b)});g=this.addGeometryHandler(p,function(a,b){0<a.height&&(b=Math.max(1,b),r.checked&&(a.width=Math.round(a.width*b*100/a.height)/100),a.height=b)});a.appendChild(f);var q=this.createPanel();q.style.paddingBottom="30px";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("position"));q.appendChild(e);var t=this.addUnitInput(q,"pt",84,44,function(){k.apply(this,arguments)}),w=this.addUnitInput(q,"pt",20,44,function(){l.apply(this,arguments)});mxUtils.br(q);this.addLabel(q,mxResources.get("left"),84);this.addLabel(q,mxResources.get("top"),20);var v=mxUtils.bind(this,function(a,c,e){b=this.format.getSelectionState();if(b.containsLabel||b.vertices.length!=d.getSelectionCount()||null==b.width||null==b.height)f.style.display="none";else{f.style.display=
+"";if(e||document.activeElement!=m)m.value=b.width+(""==b.width?"":" pt");if(e||document.activeElement!=p)p.value=b.height+(""==b.height?"":" pt")}if(b.vertices.length==d.getSelectionCount()&&null!=b.x&&null!=b.y){q.style.display="";if(e||document.activeElement!=t)t.value=b.x+(""==b.x?"":" pt");if(e||document.activeElement!=w)w.value=b.y+(""==b.y?"":" pt")}else q.style.display="none"});this.addKeyHandler(t,v);this.addKeyHandler(w,v);d.getModel().addListener(mxEvent.CHANGE,v);this.listeners.push({destroy:function(){d.getModel().removeListener(v)}});
+v();k=this.addGeometryHandler(t,function(a,b){a.relative?a.offset.x=b:a.x=b});l=this.addGeometryHandler(w,function(a,b){a.relative?a.offset.y=b:a.y=b});a.appendChild(q)};
 ArrangePanel.prototype.addGeometryHandler=function(a,c){function d(d){if(""!=a.value){var e=parseFloat(a.value);if(isNaN(e))a.value=f+" pt";else if(e!=f){b.getModel().beginUpdate();try{for(var g=b.getSelectionCells(),k=0;k<g.length;k++)if(b.getModel().isVertex(g[k])){var l=b.getCellGeometry(g[k]);null!=l&&(l=l.clone(),c(l,e),b.getModel().setGeometry(g[k],l))}}finally{b.getModel().endUpdate()}f=e;a.value=e+" pt"}}mxEvent.consume(d)}var b=this.editorUi.editor.graph,f=null;mxEvent.addListener(a,"blur",
 d);mxEvent.addListener(a,"change",d);mxEvent.addListener(a,"focus",function(){f=a.value});return d};
 ArrangePanel.prototype.addEdgeGeometryHandler=function(a,c){function d(d){if(""!=a.value){var e=parseFloat(a.value);if(isNaN(e))a.value=f+" pt";else if(e!=f){b.getModel().beginUpdate();try{for(var g=b.getSelectionCells(),k=0;k<g.length;k++)if(b.getModel().isEdge(g[k])){var l=b.getCellGeometry(g[k]);null!=l&&(l=l.clone(),c(l,e),b.getModel().setGeometry(g[k],l))}}finally{b.getModel().endUpdate()}f=e;a.value=e+" pt"}}mxEvent.consume(d)}var b=this.editorUi.editor.graph,f=null;mxEvent.addListener(a,"blur",
 d);mxEvent.addListener(a,"change",d);mxEvent.addListener(a,"focus",function(){f=a.value});return d};
 ArrangePanel.prototype.addEdgeGeometry=function(a){function c(a){var c=parseInt(p.value),c=Math.min(999,Math.max(1,isNaN(c)?1:c));c!=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)&&(b.setCellStyles("width",c,b.getSelectionCells()),d.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[c],"cells",b.getSelectionCells())));p.value=c+" pt";mxEvent.consume(a)}var d=this.editorUi,b=d.editor.graph,f=this.format.getSelectionState(),e=this.createPanel(),
 h=document.createElement("div");h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,mxResources.get("width"));e.appendChild(h);var g,k,l,m,p=this.addUnitInput(e,"pt",20,44,function(){c.apply(this,arguments)});mxUtils.br(e);this.addKeyHandler(p,v);mxEvent.addListener(p,"blur",c);mxEvent.addListener(p,"change",c);a.appendChild(e);var n=this.createPanel();n.style.paddingBottom="30px";h=document.createElement("div");h.style.position="absolute";
-h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"Start");n.appendChild(h);var u=this.addUnitInput(n,"pt",84,44,function(){l.apply(this,arguments)}),q=this.addUnitInput(n,"pt",20,44,function(){m.apply(this,arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("left"),84);this.addLabel(n,mxResources.get("top"),20);a.appendChild(n);this.addKeyHandler(u,v);this.addKeyHandler(q,v);var r=this.createPanel();r.style.paddingBottom="30px";h=document.createElement("div");
-h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"End");r.appendChild(h);var t=this.addUnitInput(r,"pt",84,44,function(){g.apply(this,arguments)}),w=this.addUnitInput(r,"pt",20,44,function(){k.apply(this,arguments)});mxUtils.br(r);this.addLabel(r,mxResources.get("left"),84);this.addLabel(r,mxResources.get("top"),20);a.appendChild(r);this.addKeyHandler(t,v);this.addKeyHandler(w,v);var v=mxUtils.bind(this,function(a,c,d){f=this.format.getSelectionState();
-a=b.getSelectionCell();if("link"==f.style.shape||"flexArrow"==f.style.shape){if(e.style.display="",d||document.activeElement!=p)d=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),p.value=d+" pt"}else e.style.display="none";1==b.getSelectionCount()&&b.model.isEdge(a)?(d=b.model.getGeometry(a),null!=d.sourcePoint&&null==b.model.getTerminal(a,!0)?(u.value=d.sourcePoint.x,q.value=d.sourcePoint.y):n.style.display="none",null!=d.targetPoint&&null==b.model.getTerminal(a,
-!1)?(t.value=d.targetPoint.x,w.value=d.targetPoint.y):r.style.display="none"):(n.style.display="none",r.style.display="none")});l=this.addEdgeGeometryHandler(u,function(a,b){a.sourcePoint.x=b});m=this.addEdgeGeometryHandler(q,function(a,b){a.sourcePoint.y=b});g=this.addEdgeGeometryHandler(t,function(a,b){a.targetPoint.x=b});k=this.addEdgeGeometryHandler(w,function(a,b){a.targetPoint.y=b});b.getModel().addListener(mxEvent.CHANGE,v);this.listeners.push({destroy:function(){b.getModel().removeListener(v)}});
+h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"Start");n.appendChild(h);var u=this.addUnitInput(n,"pt",84,44,function(){l.apply(this,arguments)}),r=this.addUnitInput(n,"pt",20,44,function(){m.apply(this,arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("left"),84);this.addLabel(n,mxResources.get("top"),20);a.appendChild(n);this.addKeyHandler(u,v);this.addKeyHandler(r,v);var q=this.createPanel();q.style.paddingBottom="30px";h=document.createElement("div");
+h.style.position="absolute";h.style.width="70px";h.style.marginTop="0px";h.style.fontWeight="bold";mxUtils.write(h,"End");q.appendChild(h);var t=this.addUnitInput(q,"pt",84,44,function(){g.apply(this,arguments)}),w=this.addUnitInput(q,"pt",20,44,function(){k.apply(this,arguments)});mxUtils.br(q);this.addLabel(q,mxResources.get("left"),84);this.addLabel(q,mxResources.get("top"),20);a.appendChild(q);this.addKeyHandler(t,v);this.addKeyHandler(w,v);var v=mxUtils.bind(this,function(a,c,d){f=this.format.getSelectionState();
+a=b.getSelectionCell();if("link"==f.style.shape||"flexArrow"==f.style.shape){if(e.style.display="",d||document.activeElement!=p)d=mxUtils.getValue(f.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),p.value=d+" pt"}else e.style.display="none";1==b.getSelectionCount()&&b.model.isEdge(a)?(d=b.model.getGeometry(a),null!=d.sourcePoint&&null==b.model.getTerminal(a,!0)?(u.value=d.sourcePoint.x,r.value=d.sourcePoint.y):n.style.display="none",null!=d.targetPoint&&null==b.model.getTerminal(a,
+!1)?(t.value=d.targetPoint.x,w.value=d.targetPoint.y):q.style.display="none"):(n.style.display="none",q.style.display="none")});l=this.addEdgeGeometryHandler(u,function(a,b){a.sourcePoint.x=b});m=this.addEdgeGeometryHandler(r,function(a,b){a.sourcePoint.y=b});g=this.addEdgeGeometryHandler(t,function(a,b){a.targetPoint.x=b});k=this.addEdgeGeometryHandler(w,function(a,b){a.targetPoint.y=b});b.getModel().addListener(mxEvent.CHANGE,v);this.listeners.push({destroy:function(){b.getModel().removeListener(v)}});
 v()};TextFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);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 c(a,b){mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?a.style.filter=b?"progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#c5ecff', EndColorStr='#87d4fb', GradientType=0)":"":a.style.backgroundImage=b?"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var d=this.editorUi,b=d.editor.graph,f=this.format.getSelectionState(),e=this.createTitle(mxResources.get("font"));e.style.paddingLeft="18px";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";mxClient.IS_QUIRKS&&(e.style.display="block");if(b.cellEditor.isContentEditing()){var h=e.cloneNode(),g=this.editorUi.toolbar.addMenu(mxResources.get("style"),mxResources.get("style"),!0,"formatBlock",h,null,!0);g.style.color="rgb(112, 112, 112)";g.style.whiteSpace="nowrap";g.style.overflow=
 "hidden";g.style.margin="0px";this.addArrow(g);g.style.width="192px";g.style.height="15px";var k=g.getElementsByTagName("div")[0];k.style.cssFloat="right";a.appendChild(h);mxClient.IS_FF&&(g.getElementsByTagName("div")[0].style.marginTop="-18px")}a.appendChild(e);h=this.createPanel();h.style.marginTop="8px";h.style.borderTop="1px solid #c0c0c0";h.style.paddingTop="6px";h.style.paddingBottom="6px";var l=this.editorUi.toolbar.addMenu("Helvetica",mxResources.get("fontFamily"),!0,"fontFamily",e,null,
 !0);l.style.color="rgb(112, 112, 112)";l.style.whiteSpace="nowrap";l.style.overflow="hidden";l.style.margin="0px";this.addArrow(l);l.style.width="192px";l.style.height="15px";mxClient.IS_FF&&(l.getElementsByTagName("div")[0].style.marginTop="-18px");k=e.cloneNode(!1);k.style.marginLeft="-3px";var m=this.editorUi.toolbar.addItems(["bold","italic","underline"],k,!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 p=this.editorUi.toolbar.addItems(["vertical"],k,!0)[0];mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(k);this.styleButtons(m);this.styleButtons([p]);g=e.cloneNode(!1);g.style.marginLeft="-3px";g.style.paddingBottom="0px";var n=function(a){return function(){return a()}},u=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),
-b.cellEditor.isContentEditing()?function(){document.execCommand("justifyleft",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),g),q=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifycenter",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),g),r=this.editorUi.toolbar.addButton("geSprite-right",
-mxResources.get("right"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifyright",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),g);this.styleButtons([u,q,r]);if(b.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
+b.cellEditor.isContentEditing()?function(){document.execCommand("justifyleft",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),g),r=this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifycenter",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),g),q=this.editorUi.toolbar.addButton("geSprite-right",
+mxResources.get("right"),b.cellEditor.isContentEditing()?function(){document.execCommand("justifyright",!1,null)}:n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),g);this.styleButtons([u,r,q]);if(b.cellEditor.isContentEditing()){var t=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},k);this.styleButtons([t]);t.firstChild.style.background="url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
 t.firstChild.style.backgroundPosition="2px 2px";t.firstChild.style.backgroundSize="18px 18px";this.styleButtons([t])}var w=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),g),v=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),g),z=this.editorUi.toolbar.addButton("geSprite-bottom",
-mxResources.get("bottom"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),g);this.styleButtons([w,v,z]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);var x,E,D,F,C,M,L;b.cellEditor.isContentEditing()?(w.style.display="none",v.style.display="none",z.style.display="none",p.style.display="none",D=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){document.execCommand("justifyfull",!1,null)},g),
-this.styleButtons([D,x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},g),E=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},g)]),D.style.marginRight="9px",n=g.cloneNode(!1),n.style.paddingTop="4px",g=[this.editorUi.toolbar.addButton("geSprite-orderedlist",mxResources.get("numberedList"),
+mxResources.get("bottom"),n(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),g);this.styleButtons([w,v,z]);mxClient.IS_QUIRKS&&mxUtils.br(a);a.appendChild(g);var x,F,C,E,D,M,L;b.cellEditor.isContentEditing()?(w.style.display="none",v.style.display="none",z.style.display="none",p.style.display="none",C=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){document.execCommand("justifyfull",!1,null)},g),
+this.styleButtons([C,x=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},g),F=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},g)]),C.style.marginRight="9px",n=g.cloneNode(!1),n.style.paddingTop="4px",g=[this.editorUi.toolbar.addButton("geSprite-orderedlist",mxResources.get("numberedList"),
 function(){document.execCommand("insertorderedlist",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-removeformat",
-mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode()},n)],this.styleButtons(g),g[g.length-2].style.marginLeft="9px",mxClient.IS_QUIRKS&&(mxUtils.br(a),n.style.height="40"),a.appendChild(n)):(m[2].style.marginRight="9px",r.style.marginRight="9px");g=e.cloneNode(!1);g.style.marginLeft="0px";g.style.paddingTop="8px";g.style.paddingBottom="4px";g.style.fontWeight=
+mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},n),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode()},n)],this.styleButtons(g),g[g.length-2].style.marginLeft="9px",mxClient.IS_QUIRKS&&(mxUtils.br(a),n.style.height="40"),a.appendChild(n)):(m[2].style.marginRight="9px",q.style.marginRight="9px");g=e.cloneNode(!1);g.style.marginLeft="0px";g.style.paddingTop="8px";g.style.paddingBottom="4px";g.style.fontWeight=
 "normal";mxUtils.write(g,mxResources.get("position"));var J=document.createElement("select");J.style.position="absolute";J.style.right="20px";J.style.width="97px";J.style.marginTop="-2px";for(var t="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" "),G={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]},n=0;n<t.length;n++){var K=document.createElement("option");K.setAttribute("value",t[n]);mxUtils.write(K,mxResources.get(t[n]));J.appendChild(K)}g.appendChild(J);t=e.cloneNode(!1);t.style.marginLeft="0px";t.style.paddingTop="4px";t.style.paddingBottom="4px";t.style.fontWeight="normal";mxUtils.write(t,mxResources.get("writingDirection"));
@@ -2791,25 +2794,25 @@ k.style.paddingBottom="28px";k.style.fontWeight="normal";g=document.createElemen
 null,null,function(a){var c=""==a.value?120:parseInt(a.value),c=Math.max(0,isNaN(c)?120:c);null!=ea&&(b.cellEditor.restoreSelection(ea),ea=null);for(var d=b.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;null!=d&&d==b.cellEditor.textarea&&null!=b.cellEditor.textarea.firstChild&&("P"!=b.cellEditor.textarea.firstChild.nodeName&&(b.cellEditor.textarea.innerHTML="<p>"+b.cellEditor.textarea.innerHTML+"</p>"),d=b.cellEditor.textarea.firstChild);null!=d&&d!=b.cellEditor.textarea&&
 b.cellEditor.textarea.contains(d)&&(d.style.lineHeight=c+"%");a.value=c+" %"},function(a){ja=a;mxEvent.addListener(a,"mousedown",function(){document.activeElement==b.cellEditor.textarea&&(ea=b.cellEditor.saveSelection())});mxEvent.addListener(a,"touchstart",function(){document.activeElement==b.cellEditor.textarea&&(ea=b.cellEditor.saveSelection())});a.value="120 %"}));h=e.cloneNode(!1);h.style.paddingLeft="0px";k=this.editorUi.toolbar.addItems(["link","image"],h,!0);g=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",
 mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},h),this.editorUi.toolbar.addMenuFunctionInContainer(h,"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.addInsertTableItem(a)}))];this.styleButtons(k);this.styleButtons(g);k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("insert")));k.appendChild(h);a.appendChild(k);mxClient.IS_QUIRKS&&
-(k.style.height="70");k=e.cloneNode(!1);k.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{null!=C&&b.selectNode(b.insertColumn(C,null!=M?M.cellIndex:0))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=C&&b.selectNode(b.insertColumn(C,null!=M?M.cellIndex+1:
--1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=C&&null!=M&&b.deleteColumn(C,M.cellIndex)}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=C&&null!=L&&b.selectNode(b.insertRow(C,L.sectionRowIndex))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowafter",
-mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=C&&null!=L&&b.selectNode(b.insertRow(C,L.sectionRowIndex+1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=C&&null!=L&&b.deleteRow(C,L.sectionRowIndex)}catch(S){this.editorUi.handleError(S)}}),k)];this.styleButtons(g);g[2].style.marginRight="9px";h=this.createPanel();h.style.paddingTop="10px";h.style.paddingBottom=
-"10px";h.appendChild(this.createTitle(mxResources.get("table")));h.appendChild(k);mxClient.IS_QUIRKS&&(mxUtils.br(a),h.style.height="70");e=e.cloneNode(!1);e.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,function(){if(null!=C){var a=C.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+
-("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){null==a||a==mxConstants.NONE?(C.removeAttribute("border"),C.style.border="",C.style.borderCollapse=""):(C.setAttribute("border","1"),C.style.border="1px solid "+a,C.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(){if(null!=C){var a=C.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,
-function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){C.style.backgroundColor=null==a||a==mxConstants.NONE?"":a})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=C){var a=C.getAttribute("cellPadding")||0,a=new FilenameDialog(d,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?C.setAttribute("cellPadding",
-a):C.removeAttribute("cellPadding")}),mxResources.get("spacing"));d.showDialog(a.container,300,80,!0,!0);a.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=C&&C.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=C&&C.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=C&&C.setAttribute("align","right")},
-e)];this.styleButtons(g);g[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);F=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var W=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(a&mxConstants.FONT_ITALIC)==
+(k.style.height="70");k=e.cloneNode(!1);k.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{null!=D&&b.selectNode(b.insertColumn(D,null!=M?M.cellIndex:0))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=D&&b.selectNode(b.insertColumn(D,null!=M?M.cellIndex+1:
+-1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=D&&null!=M&&b.deleteColumn(D,M.cellIndex)}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=D&&null!=L&&b.selectNode(b.insertRow(D,L.sectionRowIndex))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-insertrowafter",
+mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=D&&null!=L&&b.selectNode(b.insertRow(D,L.sectionRowIndex+1))}catch(S){this.editorUi.handleError(S)}}),k),this.editorUi.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=D&&null!=L&&b.deleteRow(D,L.sectionRowIndex)}catch(S){this.editorUi.handleError(S)}}),k)];this.styleButtons(g);g[2].style.marginRight="9px";h=this.createPanel();h.style.paddingTop="10px";h.style.paddingBottom=
+"10px";h.appendChild(this.createTitle(mxResources.get("table")));h.appendChild(k);mxClient.IS_QUIRKS&&(mxUtils.br(a),h.style.height="70");e=e.cloneNode(!1);e.style.paddingLeft="0px";g=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,function(){if(null!=D){var a=D.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+
+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){null==a||a==mxConstants.NONE?(D.removeAttribute("border"),D.style.border="",D.style.borderCollapse=""):(D.setAttribute("border","1"),D.style.border="1px solid "+a,D.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(){if(null!=D){var a=D.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,
+function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)});this.editorUi.pickColor(a,function(a){D.style.backgroundColor=null==a||a==mxConstants.NONE?"":a})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=D){var a=D.getAttribute("cellPadding")||0,a=new FilenameDialog(d,a,mxResources.get("apply"),mxUtils.bind(this,function(a){null!=a&&0<a.length?D.setAttribute("cellPadding",
+a):D.removeAttribute("cellPadding")}),mxResources.get("spacing"));d.showDialog(a.container,300,80,!0,!0);a.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=D&&D.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=D&&D.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=D&&D.setAttribute("align","right")},
+e)];this.styleButtons(g);g[2].style.marginRight="9px";mxClient.IS_QUIRKS&&(mxUtils.br(h),mxUtils.br(h));h.appendChild(e);a.appendChild(h);E=h}else a.appendChild(h),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(k);var W=mxUtils.bind(this,function(a,b,d){f=this.format.getSelectionState();a=mxUtils.getValue(f.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(a&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(a&mxConstants.FONT_ITALIC)==
 mxConstants.FONT_ITALIC);c(m[2],(a&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);l.firstChild.nodeValue=mxUtils.htmlEntities(mxUtils.getValue(f.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont));c(p,"0"==mxUtils.getValue(f.style,mxConstants.STYLE_HORIZONTAL,"1"));if(d||document.activeElement!=H)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),H.value=isNaN(a)?"":a+" pt";a=mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);
-c(u,a==mxConstants.ALIGN_LEFT);c(q,a==mxConstants.ALIGN_CENTER);c(r,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(w,a==mxConstants.ALIGN_TOP);c(v,a==mxConstants.ALIGN_MIDDLE);c(z,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);J.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP?
+c(u,a==mxConstants.ALIGN_LEFT);c(r,a==mxConstants.ALIGN_CENTER);c(q,a==mxConstants.ALIGN_RIGHT);a=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(w,a==mxConstants.ALIGN_TOP);c(v,a==mxConstants.ALIGN_MIDDLE);c(z,a==mxConstants.ALIGN_BOTTOM);a=mxUtils.getValue(f.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);b=mxUtils.getValue(f.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);J.value=a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_TOP?
 "topLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_TOP?"top":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_TOP?"topRight":a==mxConstants.ALIGN_LEFT&&b==mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&b==mxConstants.ALIGN_BOTTOM?"bottom":a==mxConstants.ALIGN_RIGHT&&b==mxConstants.ALIGN_BOTTOM?"bottomRight":a==mxConstants.ALIGN_LEFT?"left":a==mxConstants.ALIGN_RIGHT?"right":"center";a=mxUtils.getValue(f.style,mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION);
 a==mxConstants.TEXT_DIRECTION_RTL?O.value="rightToLeft":a==mxConstants.TEXT_DIRECTION_LTR?O.value="leftToRight":a==mxConstants.TEXT_DIRECTION_AUTO&&(O.value="automatic");if(d||document.activeElement!=fa)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING,2)),fa.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ca)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),ca.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Z)a=parseFloat(mxUtils.getValue(f.style,
 mxConstants.STYLE_SPACING_RIGHT,0)),Z.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Y)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,0)),Y.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=ga)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_LEFT,0)),ga.value=isNaN(a)?"":a+" pt"});ka=this.installInputHandler(fa,mxConstants.STYLE_SPACING,2,-999,999," pt");aa=this.installInputHandler(ca,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");la=this.installInputHandler(Z,
 mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");R=this.installInputHandler(Y,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");ba=this.installInputHandler(ga,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(H,W);this.addKeyHandler(fa,W);this.addKeyHandler(ca,W);this.addKeyHandler(Z,W);this.addKeyHandler(Y,W);this.addKeyHandler(ga,W);b.getModel().addListener(mxEvent.CHANGE,W);this.listeners.push({destroy:function(){b.getModel().removeListener(W)}});W();if(b.cellEditor.isContentEditing()){var ma=
 !1,e=function(){ma||(ma=!0,window.setTimeout(function(){for(var a=b.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;if(null!=a){var d=function(a,b){if(null!=a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(c){if(null!=b.getParentByName(a,c,b.cellEditor.textarea))return!0;for(var d=a;null!=d&&1==d.childNodes.length;)if(d=d.childNodes[0],d.nodeName==c)return!0;return!1},g=function(a){a=
 null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},f=function(a,b,c){return null!=c.style&&null!=b?(b=b.lineHeight,"%"==c.style.lineHeight.substring(c.style.lineHeight.length-1)?parseInt(c.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""};a==b.cellEditor.textarea&&1==b.cellEditor.textarea.children.length&&b.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=b.cellEditor.textarea.firstChild);
-var h=mxUtils.getCurrentStyle(a),k=g(h),p=f(k,h,a),n=a.getElementsByTagName("*");if(0<n.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var t=window.getSelection(),v=0;v<n.length;v++)if(t.containsNode(n[v],!0)){temp=mxUtils.getCurrentStyle(n[v]);var k=Math.max(g(temp),k),w=f(k,temp,n[v]);if(w!=p||isNaN(w))p=""}null!=h&&(c(m[0],"bold"==h.fontWeight||400<h.fontWeight||e("B")||e("STRONG")),c(m[1],"italic"==h.fontStyle||e("I")||e("EM")),c(m[2],e("U")),c(u,d(h.textAlign,"left")),c(q,
-d(h.textAlign,"center")),c(r,d(h.textAlign,"right")),c(D,d(h.textAlign,"justify")),c(E,e("SUP")),c(x,e("SUB")),C=b.getParentByName(a,"TABLE",b.cellEditor.textarea),L=null==C?null:b.getParentByName(a,"TR",C),M=null==C?null:b.getParentByName(a,"TD",C),F.style.display=null!=C?"":"none",document.activeElement!=H&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=B?(a.removeAttribute("size"),a.style.fontSize=B+" pt",B=null):H.value=isNaN(k)?"":k+" pt",w=parseFloat(p),isNaN(w)?ja.value="100 %":ja.value=
-Math.round(100*w)+" %"),d=h.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),e=h.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),null!=T&&(U="#"==d.charAt(0)?
+var h=mxUtils.getCurrentStyle(a),k=g(h),p=f(k,h,a),n=a.getElementsByTagName("*");if(0<n.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var t=window.getSelection(),w=0;w<n.length;w++)if(t.containsNode(n[w],!0)){temp=mxUtils.getCurrentStyle(n[w]);var k=Math.max(g(temp),k),v=f(k,temp,n[w]);if(v!=p||isNaN(v))p=""}null!=h&&(c(m[0],"bold"==h.fontWeight||400<h.fontWeight||e("B")||e("STRONG")),c(m[1],"italic"==h.fontStyle||e("I")||e("EM")),c(m[2],e("U")),c(u,d(h.textAlign,"left")),c(r,
+d(h.textAlign,"center")),c(q,d(h.textAlign,"right")),c(C,d(h.textAlign,"justify")),c(F,e("SUP")),c(x,e("SUB")),D=b.getParentByName(a,"TABLE",b.cellEditor.textarea),L=null==D?null:b.getParentByName(a,"TR",D),M=null==D?null:b.getParentByName(a,"TD",D),E.style.display=null!=D?"":"none",document.activeElement!=H&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=B?(a.removeAttribute("size"),a.style.fontSize=B+" pt",B=null):H.value=isNaN(k)?"":k+" pt",v=parseFloat(p),isNaN(v)?ja.value="100 %":ja.value=
+Math.round(100*v)+" %"),d=h.color.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),e=h.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(a,b,c,d){return"#"+("0"+Number(b).toString(16)).substr(-2)+("0"+Number(c).toString(16)).substr(-2)+("0"+Number(d).toString(16)).substr(-2)}),null!=T&&(U="#"==d.charAt(0)?
 d:"#000000",T(U,!0)),null!=I&&(A="#"==e.charAt(0)?e:null,I(A,!0)),null!=l.firstChild&&(h=h.fontFamily,"'"==h.charAt(0)&&(h=h.substring(1)),"'"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),'"'==h.charAt(0)&&(h=h.substring(1)),'"'==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1)),l.firstChild.nodeValue=h))}ma=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(b.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(b.cellEditor.textarea,
 "input",e);mxEvent.addListener(b.cellEditor.textarea,"touchend",e);mxEvent.addListener(b.cellEditor.textarea,"mouseup",e);mxEvent.addListener(b.cellEditor.textarea,"keyup",e);this.listeners.push({destroy:function(){}});e()}return a};StyleFormatPanel=function(a,c,d){BaseFormatPanel.call(this,a,c,d);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);StyleFormatPanel.prototype.defaultStrokeColor="black";
 StyleFormatPanel.prototype.init=function(){var a=this.format.getSelectionState();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.containsImage&&"image"!=a.style.shape||this.container.appendChild(this.addFill(this.createPanel()));this.container.appendChild(this.addStroke(this.createPanel()));this.container.appendChild(this.addLineJumps(this.createPanel()));
@@ -2832,18 +2835,18 @@ c));c!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(f.setCellStyl
 "curved"==g.value&&(d=[null,"1"]);for(var e=0;e<c.length;e++)f.setCellStyles(c[e],d[e],f.getSelectionCells());b.fireEvent(new mxEventObject("styleChanged","keys",c,"values",d,"cells",f.getSelectionCells()))}finally{f.getModel().endUpdate()}mxEvent.consume(a)});mxEvent.addListener(g,"click",function(a){mxEvent.consume(a)});var p="image"==e.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR,k="image"==e.style.shape?mxResources.get("border"):mxResources.get("line"),k=this.createCellColorOption(k,
 p,"#000000");k.appendChild(g);h.appendChild(k);var n=h.cloneNode(!1);n.style.fontWeight="normal";n.style.whiteSpace="nowrap";n.style.position="relative";n.style.paddingLeft="16px";n.style.marginBottom="2px";n.style.marginTop="2px";n.className="geToolbarContainer";var u=mxUtils.bind(this,function(a,b,c,d,e){a=this.editorUi.menus.styleChange(a,"",d,e,"geIcon",null);d=document.createElement("div");d.style.width=b+"px";d.style.height="1px";d.style.borderBottom="1px "+c+" "+this.defaultStrokeColor;d.style.paddingTop=
 "6px";a.firstChild.firstChild.style.padding="0px 4px 0px 4px";a.firstChild.firstChild.style.width=b+"px";a.firstChild.firstChild.appendChild(d);return a}),l=this.editorUi.toolbar.addMenuFunctionInContainer(n,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,75,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));u(a,75,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",
-null]).setAttribute("title",mxResources.get("dashed"));u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),q=n.cloneNode(!1),
-r=this.editorUi.toolbar.addMenuFunctionInContainer(q,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",null,!0).setAttribute("title",mxResources.get("line"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],
+null]).setAttribute("title",mxResources.get("dashed"));u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");u(a,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),r=n.cloneNode(!1),
+q=this.editorUi.toolbar.addMenuFunctionInContainer(r,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(a){this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,null,null,null],"geIcon geSprite geSprite-connection",null,!0).setAttribute("title",mxResources.get("line"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],
 ["link",null,null,null],"geIcon geSprite geSprite-linkedge",null,!0).setAttribute("title",mxResources.get("link"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["flexArrow",null,null,null],"geIcon geSprite geSprite-arrow",null,!0).setAttribute("title",mxResources.get("arrow"));this.editorUi.menus.styleChange(a,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,
-null],"geIcon geSprite geSprite-simplearrow",null,!0).setAttribute("title",mxResources.get("simpleArrow"))})),m=this.editorUi.toolbar.addMenuFunctionInContainer(q,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,33,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));u(a,33,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));
+null],"geIcon geSprite geSprite-simplearrow",null,!0).setAttribute("title",mxResources.get("simpleArrow"))})),m=this.editorUi.toolbar.addMenuFunctionInContainer(r,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(a){u(a,33,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));u(a,33,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));
 u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");u(a,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")})),k=n.cloneNode(!1),t=document.createElement("input");t.style.textAlign="right";
-t.style.marginTop="2px";t.style.width="41px";t.setAttribute("title",mxResources.get("linewidth"));n.appendChild(t);var w=t.cloneNode(!0);q.appendChild(w);var v=this.createStepper(t,c,1,9);v.style.display=t.style.display;v.style.marginTop="2px";n.appendChild(v);var z=this.createStepper(w,d,1,9);z.style.display=w.style.display;z.style.marginTop="2px";q.appendChild(z);mxClient.IS_QUIRKS?(t.style.height="17px",w.style.height="17px"):(t.style.position="absolute",t.style.right="32px",t.style.height="15px",
+t.style.marginTop="2px";t.style.width="41px";t.setAttribute("title",mxResources.get("linewidth"));n.appendChild(t);var w=t.cloneNode(!0);r.appendChild(w);var v=this.createStepper(t,c,1,9);v.style.display=t.style.display;v.style.marginTop="2px";n.appendChild(v);var z=this.createStepper(w,d,1,9);z.style.display=w.style.display;z.style.marginTop="2px";r.appendChild(z);mxClient.IS_QUIRKS?(t.style.height="17px",w.style.height="17px"):(t.style.position="absolute",t.style.right="32px",t.style.height="15px",
 v.style.right="20px",w.style.position="absolute",w.style.right="32px",w.style.height="15px",z.style.right="20px");mxEvent.addListener(t,"blur",c);mxEvent.addListener(t,"change",c);mxEvent.addListener(w,"blur",d);mxEvent.addListener(w,"change",d);mxClient.IS_QUIRKS&&(mxUtils.br(k),mxUtils.br(k));var x=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-orthogonal",mxResources.get("waypoints"),!1,mxUtils.bind(this,function(a){"arrow"!=e.style.shape&&(this.editorUi.menus.edgeStyleChange(a,"",
 [mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",null,!0).setAttribute("title",mxResources.get("straight")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle",null,null],"geIcon geSprite geSprite-orthogonal",null,!0).setAttribute("title",mxResources.get("orthogonal")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,
 mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["elbowEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalelbow",null,!0).setAttribute("title",mxResources.get("simple")),this.editorUi.menus.edgeStyleChange(a,
 "",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle",null,null,null],"geIcon geSprite geSprite-horizontalisometric",null,!0).setAttribute("title",mxResources.get("isometric")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["isometricEdgeStyle","vertical",null,null],"geIcon geSprite geSprite-verticalisometric",null,!0).setAttribute("title",
 mxResources.get("isometric")),"connector"==e.style.shape&&this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["orthogonalEdgeStyle","1",null],"geIcon geSprite geSprite-curved",null,!0).setAttribute("title",mxResources.get("curved")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],["entityRelationEdgeStyle",null,null],"geIcon geSprite geSprite-entity",null,
-!0).setAttribute("title",mxResources.get("entityRelation")))})),E=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-startclassic",mxResources.get("linestart"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||"filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML=
+!0).setAttribute("title",mxResources.get("entityRelation")))})),F=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-startclassic",mxResources.get("linestart"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||"filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML=
 '<font style="font-size:10px;">'+mxUtils.htmlEntities(mxResources.get("none"))+"</font>";"connector"==e.style.shape||"filledEdge"==e.style.shape?(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_CLASSIC,1],"geIcon geSprite geSprite-startclassic",null,!1).setAttribute("title",mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_CLASSIC_THIN,1],"geIcon geSprite geSprite-startclassicthin",
 null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_OPEN,0],"geIcon geSprite geSprite-startopen",null,!1).setAttribute("title",mxResources.get("openArrow")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_OPEN_THIN,0],"geIcon geSprite geSprite-startopenthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["openAsync",0],"geIcon geSprite geSprite-startopenasync",
 null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_BLOCK,1],"geIcon geSprite geSprite-startblock",null,!1).setAttribute("title",mxResources.get("block")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],[mxConstants.ARROW_BLOCK_THIN,1],"geIcon geSprite geSprite-startblockthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["async",1],"geIcon geSprite geSprite-startasync",
@@ -2854,7 +2857,7 @@ null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,
 "startFill"],[mxConstants.ARROW_DIAMOND_THIN,0],"geIcon geSprite geSprite-startthindiamondtrans",null,!1).setAttribute("title",mxResources.get("diamondThin")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["dash",0],"geIcon geSprite geSprite-startdash",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["cross",0],"geIcon geSprite geSprite-startcross",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,
 "startFill"],["circlePlus",0],"geIcon geSprite geSprite-startcircleplus",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["circle",1],"geIcon geSprite geSprite-startcircle",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERone",0],"geIcon geSprite geSprite-starterone",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERmandOne",0],"geIcon geSprite geSprite-starteronetoone",
 null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERmany",0],"geIcon geSprite geSprite-startermany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERoneToMany",0],"geIcon geSprite geSprite-starteronetomany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW,"startFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-starteroneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",
-[mxConstants.STYLE_STARTARROW,"startFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-startermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-startblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}})),D=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-endclassic",mxResources.get("lineend"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||
+[mxConstants.STYLE_STARTARROW,"startFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-startermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-startblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}})),C=this.editorUi.toolbar.addMenuFunctionInContainer(k,"geSprite-endclassic",mxResources.get("lineend"),!1,mxUtils.bind(this,function(a){if("connector"==e.style.shape||"flexArrow"==e.style.shape||
 "filledEdge"==e.style.shape){var b=this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.NONE,0],"geIcon",null,!1);b.setAttribute("title",mxResources.get("none"));b.firstChild.firstChild.innerHTML='<font style="font-size:10px;">'+mxUtils.htmlEntities(mxResources.get("none"))+"</font>";"connector"==e.style.shape||"filledEdge"==e.style.shape?(this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC,1],"geIcon geSprite geSprite-endclassic",
 null,!1).setAttribute("title",mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_CLASSIC_THIN,1],"geIcon geSprite geSprite-endclassicthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_OPEN,0],"geIcon geSprite geSprite-endopen",null,!1).setAttribute("title",mxResources.get("openArrow")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],
 [mxConstants.ARROW_OPEN_THIN,0],"geIcon geSprite geSprite-endopenthin",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["openAsync",0],"geIcon geSprite geSprite-endopenasync",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_BLOCK,1],"geIcon geSprite geSprite-endblock",null,!1).setAttribute("title",mxResources.get("block")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],
@@ -2865,18 +2868,18 @@ mxResources.get("classic")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstant
 0],"geIcon geSprite geSprite-enddiamondtrans",null,!1).setAttribute("title",mxResources.get("diamond")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],[mxConstants.ARROW_DIAMOND_THIN,0],"geIcon geSprite geSprite-endthindiamondtrans",null,!1).setAttribute("title",mxResources.get("diamondThin")),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["dash",0],"geIcon geSprite geSprite-enddash",null,!1),this.editorUi.menus.edgeStyleChange(a,
 "",[mxConstants.STYLE_ENDARROW,"endFill"],["cross",0],"geIcon geSprite geSprite-endcross",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circlePlus",0],"geIcon geSprite geSprite-endcircleplus",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["circle",1],"geIcon geSprite geSprite-endcircle",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],"geIcon geSprite geSprite-enderone",
 null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],"geIcon geSprite geSprite-enderonetoone",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],"geIcon geSprite geSprite-endermany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],"geIcon geSprite geSprite-enderonetomany",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,
-"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(r,8);this.addArrow(x);this.addArrow(E);this.addArrow(D);v=this.addArrow(l,
-9);v.className="geIcon";v.style.width="84px";z=this.addArrow(m,9);z.className="geIcon";z.style.width="22px";var F=document.createElement("div");F.style.width="85px";F.style.height="1px";F.style.borderBottom="1px solid "+this.defaultStrokeColor;F.style.marginBottom="9px";v.appendChild(F);var C=document.createElement("div");C.style.width="23px";C.style.height="1px";C.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.marginBottom="9px";z.appendChild(C);l.style.height="15px";m.style.height=
-"15px";r.style.height="15px";x.style.height="17px";E.style.marginLeft="3px";E.style.height="17px";D.style.marginLeft="3px";D.style.height="17px";a.appendChild(h);a.appendChild(q);a.appendChild(n);l=n.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend"));
+"endFill"],["ERzeroToOne",1],"geIcon geSprite geSprite-enderoneopt",null,!1),this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",1],"geIcon geSprite geSprite-endermanyopt",null,!1)):this.editorUi.menus.edgeStyleChange(a,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"))}}));this.addArrow(q,8);this.addArrow(x);this.addArrow(F);this.addArrow(C);v=this.addArrow(l,
+9);v.className="geIcon";v.style.width="84px";z=this.addArrow(m,9);z.className="geIcon";z.style.width="22px";var E=document.createElement("div");E.style.width="85px";E.style.height="1px";E.style.borderBottom="1px solid "+this.defaultStrokeColor;E.style.marginBottom="9px";v.appendChild(E);var D=document.createElement("div");D.style.width="23px";D.style.height="1px";D.style.borderBottom="1px solid "+this.defaultStrokeColor;D.style.marginBottom="9px";z.appendChild(D);l.style.height="15px";m.style.height=
+"15px";q.style.height="15px";x.style.height="17px";F.style.marginLeft="3px";F.style.height="17px";C.style.marginLeft="3px";C.style.height="17px";a.appendChild(h);a.appendChild(r);a.appendChild(n);l=n.cloneNode(!1);l.style.paddingBottom="6px";l.style.paddingTop="4px";l.style.fontWeight="normal";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="2px";m.style.fontWeight="normal";m.style.width="76px";mxUtils.write(m,mxResources.get("lineend"));
 l.appendChild(m);var M,L,J=this.addUnitInput(l,"pt",74,33,function(){M.apply(this,arguments)}),G=this.addUnitInput(l,"pt",20,33,function(){L.apply(this,arguments)});mxUtils.br(l);v=document.createElement("div");v.style.height="8px";l.appendChild(v);m=m.cloneNode(!1);mxUtils.write(m,mxResources.get("linestart"));l.appendChild(m);var K,O,Q=this.addUnitInput(l,"pt",74,33,function(){K.apply(this,arguments)}),P=this.addUnitInput(l,"pt",20,33,function(){O.apply(this,arguments)});mxUtils.br(l);this.addLabel(l,
 mxResources.get("spacing"),74,50);this.addLabel(l,mxResources.get("size"),20,50);mxUtils.br(l);h=h.cloneNode(!1);h.style.fontWeight="normal";h.style.position="relative";h.style.paddingLeft="16px";h.style.marginBottom="2px";h.style.marginTop="6px";h.style.borderWidth="0px";h.style.paddingBottom="18px";m=document.createElement("div");m.style.position="absolute";m.style.marginLeft="3px";m.style.marginBottom="12px";m.style.marginTop="1px";m.style.fontWeight="normal";m.style.width="120px";mxUtils.write(m,
 mxResources.get("perimeter"));h.appendChild(m);var H,B=this.addUnitInput(h,"pt",20,41,function(){H.apply(this,arguments)});e.edges.length==f.getSelectionCount()?(a.appendChild(k),mxClient.IS_QUIRKS&&(mxUtils.br(a),mxUtils.br(a)),a.appendChild(l)):e.vertices.length==f.getSelectionCount()&&(mxClient.IS_QUIRKS&&mxUtils.br(a),a.appendChild(h));var I=mxUtils.bind(this,function(a,c,d){function h(a,c,d,g){d=d.getElementsByTagName("div")[0];d.className=b.getCssClassForMarker(g,e.style.shape,a,c);"geSprite geSprite-noarrow"==
 d.className&&(d.innerHTML=mxUtils.htmlEntities(mxResources.get("none")),d.style.backgroundImage="none",d.style.verticalAlign="top",d.style.marginTop="5px",d.style.fontSize="10px",d.style.filter="none",d.style.color=this.defaultStrokeColor,d.nextSibling.style.marginTop="0px");return d}e=this.format.getSelectionState();mxUtils.getValue(e.style,p,null);if(d||document.activeElement!=t)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),t.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=
-w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?F.style.borderBottom="1px dashed "+
-this.defaultStrokeColor:F.style.borderBottom="1px dotted "+this.defaultStrokeColor:F.style.borderBottom="1px solid "+this.defaultStrokeColor;C.style.borderBottom=F.style.borderBottom;a=x.getElementsByTagName("div")[0];c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null);"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null);"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c||
-"none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal";r.getElementsByTagName("div")[0].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==f.getSelectionCount()?(q.style.display="",n.style.display="none"):(q.style.display="none",n.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),E,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,
-"endFill","1"),D,"end");"arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow");mxUtils.setOpacity(x,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(E,30),mxUtils.setOpacity(D,30)):(mxUtils.setOpacity(E,100),mxUtils.setOpacity(D,100));if(d||document.activeElement!=
+w)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),w.value=isNaN(a)?"":a+" pt";g.style.visibility="connector"==e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?g.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(g.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?E.style.borderBottom="1px dashed "+
+this.defaultStrokeColor:E.style.borderBottom="1px dotted "+this.defaultStrokeColor:E.style.borderBottom="1px solid "+this.defaultStrokeColor;D.style.borderBottom=E.style.borderBottom;a=x.getElementsByTagName("div")[0];c=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null);"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(c=null);"orthogonalEdgeStyle"==c&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?a.className="geSprite geSprite-curved":a.className="straight"==c||
+"none"==c||null==c?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c?"geSprite geSprite-entity":"elbowEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==c?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal";q.getElementsByTagName("div")[0].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==f.getSelectionCount()?(r.style.display="",n.style.display="none"):(r.style.display="none",n.style.display="");a=h(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),F,"start");c=h(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,
+"endFill","1"),C,"end");"arrow"==e.style.shape?(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(a.className="geSprite geSprite-noarrow",c.className="geSprite geSprite-noarrow");mxUtils.setOpacity(x,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(F,30),mxUtils.setOpacity(C,30)):(mxUtils.setOpacity(F,100),mxUtils.setOpacity(C,100));if(d||document.activeElement!=
 P)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),P.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),Q.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=G)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),G.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=Q)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING,
 0)),J.value=isNaN(a)?"":a+" pt";if(d||document.activeElement!=B)a=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),B.value=isNaN(a)?"":a+" pt"});O=this.installInputHandler(P,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");K=this.installInputHandler(Q,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");L=this.installInputHandler(G,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");M=this.installInputHandler(J,mxConstants.STYLE_TARGET_PERIMETER_SPACING,
 0,-999,999," pt");H=this.installInputHandler(B,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(t,I);this.addKeyHandler(P,I);this.addKeyHandler(Q,I);this.addKeyHandler(G,I);this.addKeyHandler(J,I);this.addKeyHandler(B,I);f.getModel().addListener(mxEvent.CHANGE,I);this.listeners.push({destroy:function(){f.getModel().removeListener(I)}});I();return a};
@@ -2903,9 +2906,9 @@ this.listener)},destroy:function(){d.removeListener(this.listener)}}))};DiagramF
 DiagramFormatPanel.prototype.addPaperSize=function(a){var c=this.editorUi,d=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var b=PageSetupDialog.addPageFormatPanel(a,"formatpanel",d.pageFormat,function(a){if(null==d.pageFormat||d.pageFormat.width!=a.width||d.pageFormat.height!=a.height)a=new ChangePageSetup(c,null,null,a),a.ignoreColor=!0,a.ignoreImage=!0,d.model.execute(a)});this.addKeyHandler(b.widthInput,function(){b.set(d.pageFormat)});this.addKeyHandler(b.heightInput,
 function(){b.set(d.pageFormat)});var f=function(){b.set(d.pageFormat)};c.addListener("pageFormatChanged",f);this.listeners.push({destroy:function(){c.removeListener(f)}});d.getModel().addListener(mxEvent.CHANGE,f);this.listeners.push({destroy:function(){d.getModel().removeListener(f)}});return a};
 DiagramFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("editData"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editData").funct()}));c.setAttribute("title",mxResources.get("editData")+" ("+this.editorUi.actions.get("editData").shortcut+")");c.style.width="202px";c.style.marginBottom="2px";a.appendChild(c);mxUtils.br(a);c=mxUtils.button(mxResources.get("clearDefaultStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("clearDefaultStyle").funct()}));
-c.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");c.style.width="202px";a.appendChild(c);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(){mxCylinder.call(this)}function c(){mxActor.call(this)}function d(){mxCylinder.call(this)}function b(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxActor.call(this)}function h(){mxCylinder.call(this)}function g(){mxActor.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function m(){mxActor.call(this)}function p(){mxActor.call(this)}function n(){mxActor.call(this)}function u(){mxActor.call(this)}function q(a,b){this.canvas=
-a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,q.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,q.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,q.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,q.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
-this.canvas.curveTo=mxUtils.bind(this,q.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,q.prototype.arcTo)}function r(){mxRectangleShape.call(this)}function t(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function E(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function F(){mxShape.call(this)}function C(){mxShape.call(this)}
+c.setAttribute("title",mxResources.get("clearDefaultStyle")+" ("+this.editorUi.actions.get("clearDefaultStyle").shortcut+")");c.style.width="202px";a.appendChild(c);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(){mxCylinder.call(this)}function c(){mxActor.call(this)}function d(){mxCylinder.call(this)}function b(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function e(){mxActor.call(this)}function h(){mxCylinder.call(this)}function g(){mxActor.call(this)}function k(){mxActor.call(this)}function l(){mxActor.call(this)}function m(){mxActor.call(this)}function p(){mxActor.call(this)}function n(){mxActor.call(this)}function u(){mxActor.call(this)}function r(a,b){this.canvas=
+a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=b;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,r.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,r.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,r.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,r.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
+this.canvas.curveTo=mxUtils.bind(this,r.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,r.prototype.arcTo)}function q(){mxRectangleShape.call(this)}function t(){mxRectangleShape.call(this)}function w(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function x(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function C(){mxCylinder.call(this)}function E(){mxShape.call(this)}function D(){mxShape.call(this)}
 function M(){mxEllipse.call(this)}function L(){mxShape.call(this)}function J(){mxShape.call(this)}function G(){mxRectangleShape.call(this)}function K(){mxShape.call(this)}function O(){mxShape.call(this)}function Q(){mxShape.call(this)}function P(){mxShape.call(this)}function H(){mxShape.call(this)}function B(){mxCylinder.call(this)}function I(){mxDoubleEllipse.call(this)}function A(){mxDoubleEllipse.call(this)}function T(){mxArrowConnector.call(this);this.spacing=0}function U(){mxArrowConnector.call(this);
 this.spacing=0}function X(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function aa(){mxActor.call(this)}function ka(){mxActor.call(this)}function ba(){mxActor.call(this)}function R(){mxActor.call(this)}function la(){mxActor.call(this)}function ca(){mxActor.call(this)}function fa(){mxActor.call(this)}function ga(){mxActor.call(this)}function Y(){mxActor.call(this)}function Z(){mxActor.call(this)}function ea(){mxEllipse.call(this)}function ja(){mxEllipse.call(this)}function W(){mxEllipse.call(this)}
 function ma(){mxRhombus.call(this)}function S(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Ca(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function ta(){mxActor.call(this)}function pa(){mxActor.call(this)}function qa(){mxActor.call(this)}function na(){mxConnector.call(this)}function Fa(a,b,c,d,e,g,f,h,k,l){f+=k;var y=d.clone();d.x-=e*(2*f+k);d.y-=g*(2*f+k);e*=f+k;g*=f+k;return function(){a.ellipse(y.x-e-f,y.y-g-f,2*f,2*f);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,
@@ -2925,33 +2928,33 @@ Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(
 function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var b=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*b),0,0)}return null};mxUtils.extend(m,mxActor);m.prototype.size=.2;m.prototype.isRoundable=function(){return!0};m.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
 2;this.addPoints(a,[new mxPoint(0,e),new mxPoint(b,0),new mxPoint(d,0),new mxPoint(d-b,e)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("parallelogram",m);mxUtils.extend(p,mxActor);p.prototype.size=.2;p.prototype.isRoundable=function(){return!0};p.prototype.redrawPath=function(a,b,c,d,e){b=d*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,
 e),new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("trapezoid",p);mxUtils.extend(n,mxActor);n.prototype.size=.5;n.prototype.redrawPath=function(a,b,c,d,e){a.setFillColor(null);b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(b,0),new mxPoint(b,e/2),new mxPoint(0,e/2),new mxPoint(b,
-e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",n);mxUtils.extend(u,mxActor);u.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",u);q.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
-b;this.firstX=a;this.firstY=b};q.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};q.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};q.prototype.curveTo=function(a,b,c,d,e,g){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};q.prototype.arcTo=function(a,b,c,d,
-e,g,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=f};q.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),g=Math.sqrt(d*d+e*e);if(2>g){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var f=Math.round(g/10),y=this.defaultVariation;5>f&&(f=5,y/=3);for(var h=c(a-this.lastX)*d/f,c=c(b-this.lastY)*e/f,
-d=d/g,e=e/g,g=0;g<f;g++){var k=(Math.random()-.5)*y;this.originalLineTo.call(this.canvas,h*g+this.lastX-k*e,c*g+this.lastY-k*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};q.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};
-var Ka=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new q(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ka.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var La=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==
+e/2),new mxPoint(b,e),new mxPoint(d,e)],this.isRounded,c,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",n);mxUtils.extend(u,mxActor);u.prototype.redrawPath=function(a,b,c,d,e){a.setStrokeWidth(1);a.setFillColor(this.stroke);b=d/5;a.rect(0,0,b,e);a.fillAndStroke();a.rect(2*b,0,b,e);a.fillAndStroke();a.rect(4*b,0,b,e);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",u);r.prototype.moveTo=function(a,b){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
+b;this.firstX=a;this.firstY=b};r.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)};r.prototype.quadTo=function(a,b,c,d){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=d};r.prototype.curveTo=function(a,b,c,d,e,g){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};r.prototype.arcTo=function(a,b,c,d,
+e,g,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=f};r.prototype.lineTo=function(a,b){if(null!=this.lastX&&null!=this.lastY){var c=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},d=Math.abs(a-this.lastX),e=Math.abs(b-this.lastY),g=Math.sqrt(d*d+e*e);if(2>g){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b;return}var f=Math.round(g/10),y=this.defaultVariation;5>f&&(f=5,y/=3);for(var h=c(a-this.lastX)*d/f,c=c(b-this.lastY)*e/f,
+d=d/g,e=e/g,g=0;g<f;g++){var k=(Math.random()-.5)*y;this.originalLineTo.call(this.canvas,h*g+this.lastX-k*e,c*g+this.lastY-k*d)}this.originalLineTo.call(this.canvas,a,b)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=b};r.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};
+var Ka=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new r(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ka.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var La=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==
 this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&La.apply(this,arguments)};var Ma=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,b,c,d,e){if(null==a.handJiggle)Ma.apply(this,arguments);else{var g=!0;null!=this.style&&(g="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(g||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)g||null!=this.fill&&this.fill!=mxConstants.NONE||
 (a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?g=Math.min(d/2,Math.min(e/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.min(d*g,e*g)),a.moveTo(b+g,c),a.lineTo(b+d-g,c),a.quadTo(b+d,c,b+d,c+g),a.lineTo(b+d,c+e-g),a.quadTo(b+d,c+e,b+d-g,c+e),a.lineTo(b+g,c+e),a.quadTo(b,c+e,b,c+e-g),
-a.lineTo(b,c+g),a.quadTo(b,c,b+g,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var Na=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&Na.apply(this,arguments)};mxUtils.extend(r,mxRectangleShape);r.prototype.size=.1;r.prototype.isHtmlAllowed=function(){return!1};r.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,
-!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};r.prototype.paintForeground=
-function(a,b,c,d,e){var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*f,e*f));g=Math.round(g);a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.moveTo(b+d-g,c);a.lineTo(b+d-g,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",r);mxUtils.extend(t,
+a.lineTo(b,c+g),a.quadTo(b,c,b+g,c)):(a.moveTo(b,c),a.lineTo(b+d,c),a.lineTo(b+d,c+e),a.lineTo(b,c+e),a.lineTo(b,c)),a.close(),a.end(),a.fillAndStroke()}};var Na=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,b,c,d,e){null==a.handJiggle&&Na.apply(this,arguments)};mxUtils.extend(q,mxRectangleShape);q.prototype.size=.1;q.prototype.isHtmlAllowed=function(){return!1};q.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,
+!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var b=a.width,c=a.height;a=new mxRectangle(a.x,a.y,b,c);var d=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,d=Math.max(d,Math.min(b*e,c*e));a.x+=Math.round(d);a.width-=Math.round(2*d)}return a};q.prototype.paintForeground=
+function(a,b,c,d,e){var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*f,e*f));g=Math.round(g);a.begin();a.moveTo(b+g,c);a.lineTo(b+g,c+e);a.moveTo(b+d-g,c);a.lineTo(b+d-g,c+e);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",q);mxUtils.extend(t,
 mxRectangleShape);t.prototype.paintBackground=function(a,b,c,d,e){a.setFillColor(mxConstants.NONE);a.rect(b,c,d,e);a.fill()};t.prototype.paintForeground=function(a,b,c,d,e){};mxCellRenderer.registerShape("transparent",t);mxUtils.extend(w,mxHexagon);w.prototype.size=30;w.prototype.position=.5;w.prototype.position2=.5;w.prototype.base=20;w.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};w.prototype.isRoundable=
 function(){return!0};w.prototype.redrawPath=function(a,b,c,d,e){b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),h=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"base",this.base))));
 this.addPoints(a,[new mxPoint(0,0),new mxPoint(d,0),new mxPoint(d,e-c),new mxPoint(Math.min(d,g+h),e-c),new mxPoint(f,e),new mxPoint(Math.max(0,g),e-c),new mxPoint(0,e-c)],this.isRounded,b,!0,[4])};mxCellRenderer.registerShape("callout",w);mxUtils.extend(v,mxActor);v.prototype.size=.2;v.prototype.fixedSize=20;v.prototype.isRoundable=function(){return!0};v.prototype.redrawPath=function(a,b,c,d,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,
 "size",this.fixedSize)))):d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(d-b,0),new mxPoint(d,e/2),new mxPoint(d-b,e),new mxPoint(0,e),new mxPoint(b,e/2)],this.isRounded,c,!0);a.end()};mxCellRenderer.registerShape("step",v);mxUtils.extend(z,mxHexagon);z.prototype.size=.25;z.prototype.isRoundable=function(){return!0};z.prototype.redrawPath=
 function(a,b,c,d,e){b=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(d-b,0),new mxPoint(d,.5*e),new mxPoint(d-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",z);mxUtils.extend(x,mxRectangleShape);x.prototype.isHtmlAllowed=function(){return!1};x.prototype.paintForeground=function(a,
 b,c,d,e){var g=Math.min(d/5,e/5)+1;a.begin();a.moveTo(b+d/2,c+g);a.lineTo(b+d/2,c+e-g);a.moveTo(b+g,c+e/2);a.lineTo(b+d-g,c+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",x);var Ga=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
-b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ga.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&(a.setShadow(!1),Ga.apply(this,[a,b,c,d,e]))}};mxUtils.extend(E,mxRectangleShape);E.prototype.isHtmlAllowed=function(){return!1};E.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,
-this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};E.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+
+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,c,d,e){Ga.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&(a.setShadow(!1),Ga.apply(this,[a,b,c,d,e]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,
+this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};F.prototype.paintForeground=function(a,b,c,d,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=g;c+=g;d-=2*g;e-=2*g;0<d&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,f;do{f=mxCellRenderer.defaultShapes[this.style["symbol"+
 g]];if(null!=f){var h=this.style["symbol"+g+"Align"],y=this.style["symbol"+g+"VerticalAlign"],k=this.style["symbol"+g+"Width"],l=this.style["symbol"+g+"Height"],va=this.style["symbol"+g+"Spacing"]||0,Da=this.style["symbol"+g+"VSpacing"]||va,da=this.style["symbol"+g+"ArcSpacing"];null!=da&&(da*=this.getArcSize(d+this.strokewidth,e+this.strokewidth),va+=da,Da+=da);var da=b,m=c,da=h==mxConstants.ALIGN_CENTER?da+(d-k)/2:h==mxConstants.ALIGN_RIGHT?da+(d-k-va):da+va,m=y==mxConstants.ALIGN_MIDDLE?m+(e-l)/
-2:y==mxConstants.ALIGN_BOTTOM?m+(e-l-Da):m+Da;a.save();h=new f;h.style=this.style;f.prototype.paintVertexShape.call(h,a,da,m,k,l);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",E);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,b,c,d,e,g){g?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",
-D);mxUtils.extend(F,mxShape);F.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",F);mxUtils.extend(C,mxShape);C.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};C.prototype.paintBackground=
-function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",C);mxUtils.extend(M,mxEllipse);M.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",
+2:y==mxConstants.ALIGN_BOTTOM?m+(e-l-Da):m+Da;a.save();h=new f;h.style=this.style;f.prototype.paintVertexShape.call(h,a,da,m,k,l);a.restore()}g++}while(null!=f)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",F);mxUtils.extend(C,mxCylinder);C.prototype.redrawPath=function(a,b,c,d,e,g){g?(a.moveTo(0,0),a.lineTo(d/2,e/2),a.lineTo(d,0),a.end()):(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",
+C);mxUtils.extend(E,mxShape);E.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.ellipse(d/4,0,d/2,e/4);a.fillAndStroke();a.begin();a.moveTo(d/2,e/4);a.lineTo(d/2,2*e/3);a.moveTo(d/2,e/3);a.lineTo(0,e/3);a.moveTo(d/2,e/3);a.lineTo(d,e/3);a.moveTo(d/2,2*e/3);a.lineTo(0,e);a.moveTo(d/2,2*e/3);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",E);mxUtils.extend(D,mxShape);D.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};D.prototype.paintBackground=
+function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(d/6,e/2);a.end();a.stroke();a.ellipse(d/6,0,5*d/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",D);mxUtils.extend(M,mxEllipse);M.prototype.paintVertexShape=function(a,b,c,d,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+d/8,c+e);a.lineTo(b+7*d/8,c+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",
 M);mxUtils.extend(L,mxShape);L.prototype.paintVertexShape=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(d,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(d,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",L);mxUtils.extend(J,mxShape);J.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};J.prototype.paintBackground=function(a,b,c,d,e){a.translate(b,c);a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,0);a.end();a.stroke();a.ellipse(0,
 e/8,d,7*e/8);a.fillAndStroke()};J.prototype.paintForeground=function(a,b,c,d,e){a.begin();a.moveTo(3*d/8,e/8*1.1);a.lineTo(5*d/8,e/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(G,mxRectangleShape);G.prototype.size=40;G.prototype.isHtmlAllowed=function(){return!1};G.prototype.getLabelBounds=function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,b)};G.prototype.paintBackground=
 function(a,b,c,d,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,b,c,d,g):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=G&&(f=new f,f.apply(this.state),a.save(),f.paintVertexShape(a,b,c,d,g),a.restore()));g<e&&(a.setDashed(!0),a.begin(),a.moveTo(b+d/2,c+g),a.lineTo(b+d/2,c+e),a.end(),a.stroke())};G.prototype.paintForeground=
 function(a,b,c,d,e){var g=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,b,c,d,Math.min(e,g))};mxCellRenderer.registerShape("umlLifeline",G);mxUtils.extend(K,mxShape);K.prototype.width=60;K.prototype.height=30;K.prototype.corner=10;K.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,
-"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var g=this.corner,f=Math.min(d,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(a.setFillColor(y),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
+"height",this.height)*this.scale))};K.prototype.paintBackground=function(a,b,c,d,e){var g=this.corner,f=Math.min(d,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),h=Math.min(e,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),k=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);k!=mxConstants.NONE&&(a.setFillColor(k),a.rect(b,c,d,e),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
 mxConstants.NONE?(this.getGradientBounds(a,b,c,d,e),a.setGradient(this.fill,this.gradient,b,c,d,e,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(b,c);a.lineTo(b+f,c);a.lineTo(b+f,c+Math.max(0,h-1.5*g));a.lineTo(b+Math.max(0,f-g),c+h);a.lineTo(b,c+h);a.close();a.fillAndStroke();a.begin();a.moveTo(b+f,c);a.lineTo(b+d,c);a.lineTo(b+d,c+e);a.lineTo(b,c+e);a.lineTo(b,c+h);a.stroke()};mxCellRenderer.registerShape("umlFrame",K);mxPerimeter.LifelinePerimeter=function(a,b,c,d){d=G.prototype.size;
 null!=b&&(d=mxUtils.getValue(b.style,"size",d)*b.view.scale);b=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;c.x<a.getCenterX()&&(b=-1*(b+1));return new mxPoint(a.getCenterX()+b,Math.min(a.y+a.height,Math.max(a.y+d,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,b,c,d){d=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);
 mxPerimeter.BackbonePerimeter=function(a,b,c,d){d=parseFloat(b.style[mxConstants.STYLE_STROKEWIDTH]||1)*b.view.scale/2-1;null!=b.style.backboneSize&&(d+=parseFloat(b.style.backboneSize)*b.view.scale/2-1);if("south"==b.style[mxConstants.STYLE_DIRECTION]||"north"==b.style[mxConstants.STYLE_DIRECTION])return c.x<a.getCenterX()&&(d=-1*(d+1)),new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y,c.y)));c.y<a.getCenterY()&&(d=-1*(d+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,c.x)),
@@ -3015,7 +3018,7 @@ parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<b/6&&(a.style[mxConstants.STYL
 b.y+Math.max(0,Math.min(b.height,c))):new mxPoint(b.x+Math.max(0,Math.min(b.width,c)),b.getCenterY())},function(b,c){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(b.height,c.y-b.y))):Math.round(Math.max(0,Math.min(b.width,c.x-b.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var c=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));b.push(ia(a,c/2))}return b},
 label:sa(),ext:sa(),rectangle:sa(),triangle:sa(),rhombus:sa(),umlLifeline:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",G.prototype.size))));return new mxPoint(a.getCenterX(),a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,b.y-a.y)))},!1)]},umlFrame:function(a){return[N(a,["width","height"],function(a){var b=Math.max(K.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,
 "width",K.prototype.width))),c=Math.max(1.5*K.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",K.prototype.height)));return new mxPoint(a.x+b,a.y+c)},function(a,b){this.state.style.width=Math.round(Math.max(K.prototype.corner,Math.min(a.width,b.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*K.prototype.corner,Math.min(a.height,b.y-a.y)))},!1)]},process:function(a){var b=[N(a,["size"],function(a){var b=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,
-"size",r.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},cross:function(a){return[N(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",pa.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,
+"size",q.prototype.size))));return new mxPoint(a.x+a.width*b,a.y+a.height/4)},function(a,b){this.state.style.size=Math.max(0,Math.min(.5,(b.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},cross:function(a){return[N(a,["size"],function(a){var b=Math.min(a.width,a.height),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",pa.prototype.size)))*b/2;return new mxPoint(a.getCenterX()-b,a.getCenterY()-b)},function(a,b){var c=Math.min(a.width,
 a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-b.y)/c*2,Math.max(0,a.getCenterX()-b.x)/c*2)))})]},note:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(a.x+a.width-b,a.y+b)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-b.x),Math.min(a.height,b.y-a.y))))})]},manualInput:function(a){var b=
 [N(a,["size"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",X.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*b/4)},function(a,b){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(b.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ia(a));return b},dataStorage:function(a){return[N(a,["size"],function(a){var b=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size))));
 return new mxPoint(a.x+(1-b)*a.width,a.getCenterY())},function(a,b){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-b.x)/a.width))})]},callout:function(a){var b=[N(a,["size","position"],function(a){var b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",w.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",w.prototype.position)));mxUtils.getValue(this.state.style,"base",w.prototype.base);return new mxPoint(a.x+c*a.width,a.y+a.height-
@@ -3050,7 +3053,7 @@ f.prototype.getConstraints=function(a,b,c){a=[];var d=Math.max(0,Math.min(b,Math
 ja.prototype.constraints=mxEllipse.prototype.constraints;W.prototype.constraints=mxEllipse.prototype.constraints;ua.prototype.constraints=mxEllipse.prototype.constraints;X.prototype.constraints=mxRectangleShape.prototype.constraints;ta.prototype.constraints=mxRectangleShape.prototype.constraints;qa.prototype.getConstraints=function(a,b,c){a=[];var d=Math.min(b,c/2),e=Math.min(b-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*b);a.push(new mxConnectionConstraint(new mxPoint(0,
 .5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b-d,c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+b-d),c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return a};Y.prototype.constraints=
 mxRectangleShape.prototype.constraints;Z.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)];F.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,
+.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)];E.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)];B.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)];e.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,
@@ -3080,7 +3083,7 @@ this.addAction("open...",function(){window.openNew=!0;window.openKey="open";c.op
 320,220,!0,!0,function(){window.openFile=null})}).isEnabled=f;this.addAction("save",function(){c.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=f;this.addAction("saveAs...",function(){c.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=f;this.addAction("export...",function(){c.showDialog((new ExportDialog(c)).container,300,230,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(c);c.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...",
 function(){c.showDialog((new PageSetupDialog(c)).container,320,220,!0,!0)}).isEnabled=f;this.addAction("print...",function(){c.showDialog((new PrintDialog(c)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(b,null,10,10)});this.addAction("undo",function(){c.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){c.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",
 function(){mxClipboard.cut(b)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(b)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&mxClipboard.paste(b)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){b.getModel().beginUpdate();try{var c=mxClipboard.paste(b);if(null!=c){a=!0;for(var d=0;d<c.length&&
-a;d++)a=a&&b.model.isEdge(c[d]);var e=b.view.translate,g=b.view.scale,f=e.x,h=e.y,e=null;if(1==c.length&&a){var q=b.getCellGeometry(c[0]);null!=q&&(e=q.getTerminalPoint(!0))}e=null!=e?e:b.getBoundingBoxFromGeometry(c,a);if(null!=e){var r=Math.round(b.snap(b.popupMenuHandler.triggerX/g-f)),t=Math.round(b.snap(b.popupMenuHandler.triggerY/g-h));b.cellsMoved(c,r-e.x,t-e.y)}}}finally{b.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=b.getSelectionCell();b.isEnabled()&&null!=a&&b.getModel().isVertex(a)&&
+a;d++)a=a&&b.model.isEdge(c[d]);var e=b.view.translate,g=b.view.scale,f=e.x,h=e.y,e=null;if(1==c.length&&a){var r=b.getCellGeometry(c[0]);null!=r&&(e=r.getTerminalPoint(!0))}e=null!=e?e:b.getBoundingBoxFromGeometry(c,a);if(null!=e){var q=Math.round(b.snap(b.popupMenuHandler.triggerX/g-f)),t=Math.round(b.snap(b.popupMenuHandler.triggerY/g-h));b.cellsMoved(c,q-e.x,t-e.y)}}}finally{b.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=b.getSelectionCell();b.isEnabled()&&null!=a&&b.getModel().isVertex(a)&&
 (a=b.getCellGeometry(a),null!=a&&(c.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(b.isEnabled()&&!b.isSelectionEmpty()&&null!=c.copiedSize){b.getModel().beginUpdate();try{var d=b.getSelectionCells();for(a=0;a<d.length;a++)if(b.getModel().isVertex(d[a])){var e=b.getCellGeometry(d[a]);null!=e&&(e=e.clone(),e.width=c.copiedSize.width,e.height=c.copiedSize.height,b.getModel().setGeometry(d[a],e))}}finally{b.getModel().endUpdate()}}},
 null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){b.setSelectionCells(b.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){b.turnShapes(b.getSelectionCells())},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices",
 function(){b.selectVertices()},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){b.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){b.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){b.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!b.isSelectionEmpty()){b.getModel().beginUpdate();try{var a=b.isCellMovable(b.getSelectionCell())?1:0;b.toggleCellStyles(mxConstants.STYLE_MOVABLE,
@@ -3151,7 +3154,7 @@ Menus.prototype.put=function(a,c){return this.menus[a]=c};Menus.prototype.get=fu
 Menus.prototype.addInsertTableItem=function(a){function c(a,b){for(var c=["<table>"],d=0;d<a;d++){c.push("<tr>");for(var e=0;e<b;e++)c.push("<td><br></td>");c.push("</tr>")}c.push("</table>");return c.join("")}var d=this.editorUi.editor.graph;a=a.addItem("",null,mxUtils.bind(this,function(a){var b=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=b&&null!=d.cellEditor.textarea){var e=d.getParentByName(b,"TR"),f=d.cellEditor.textarea.getElementsByTagName("table");a=[];for(var h=0;h<f.length;h++)a.push(f[h]);
 d.container.focus();d.pasteHtmlAtCaret(c(e.sectionRowIndex+1,b.cellIndex+1));b=d.cellEditor.textarea.getElementsByTagName("table");if(b.length==a.length+1)for(h=b.length-1;0<=h;h--)if(0==h||b[h]!=a[h-1]){d.selectNode(b[h].rows[0].cells[0]);break}}}));var b='<img src="'+mxClient.imageBasePath+'/transparent.gif" width="16" height="16"/>';a.firstChild.innerHTML="";var f=function(a,c){var d=document.createElement("table");d.setAttribute("border","1");d.style.borderCollapse="collapse";mxClient.IS_QUIRKS||
 d.setAttribute("cellPadding","8");for(var e=0;e<a;e++)for(var g=d.insertRow(e),f=0;f<c;f++){var h=g.insertCell(-1);mxClient.IS_QUIRKS&&(h.innerHTML=b)}return d}(5,5);a.firstChild.appendChild(f);var e=document.createElement("div");e.style.padding="4px";e.style.fontSize=Menus.prototype.defaultFontSize+"px";e.innerHTML="1x1";a.firstChild.appendChild(e);mxEvent.addListener(f,"mouseover",function(a){var c=d.getParentByName(mxEvent.getSource(a),"TD");if(null!=c){for(var h=d.getParentByName(c,"TR"),l=Math.min(20,
-h.sectionRowIndex+2),m=Math.min(20,c.cellIndex+2),p=f.rows.length;p<l;p++)for(var n=f.insertRow(p),u=0;u<f.rows[0].cells.length;u++){var q=n.insertCell(-1);mxClient.IS_QUIRKS&&(q.innerHTML=b)}for(p=0;p<f.rows.length;p++)for(n=f.rows[p],u=n.cells.length;u<m;u++)q=n.insertCell(-1),mxClient.IS_QUIRKS&&(q.innerHTML=b);e.innerHTML=c.cellIndex+1+"x"+(h.sectionRowIndex+1);for(l=0;l<f.rows.length;l++)for(m=f.rows[l],p=0;p<m.cells.length;p++)m.cells[p].style.backgroundColor=l<=h.sectionRowIndex&&p<=c.cellIndex?
+h.sectionRowIndex+2),m=Math.min(20,c.cellIndex+2),p=f.rows.length;p<l;p++)for(var n=f.insertRow(p),u=0;u<f.rows[0].cells.length;u++){var r=n.insertCell(-1);mxClient.IS_QUIRKS&&(r.innerHTML=b)}for(p=0;p<f.rows.length;p++)for(n=f.rows[p],u=n.cells.length;u<m;u++)r=n.insertCell(-1),mxClient.IS_QUIRKS&&(r.innerHTML=b);e.innerHTML=c.cellIndex+1+"x"+(h.sectionRowIndex+1);for(l=0;l<f.rows.length;l++)for(m=f.rows[l],p=0;p<m.cells.length;p++)m.cells[p].style.backgroundColor=l<=h.sectionRowIndex&&p<=c.cellIndex?
 "blue":"white";mxEvent.consume(a)}})};
 Menus.prototype.edgeStyleChange=function(a,c,d,b,f,e,h){return a.addItem(c,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;a.stopEditing(!1);a.getModel().beginUpdate();try{for(var c=a.getSelectionCells(),e=[],f=0;f<c.length;f++){var p=c[f];if(a.getModel().isEdge(p)){if(h){var n=a.getCellGeometry(p);null!=n&&(n=n.clone(),n.points=null,a.getModel().setGeometry(p,n))}for(var u=0;u<d.length;u++)a.setCellStyles(d[u],b[u],[p]);e.push(p)}}this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",
 d,"values",b,"cells",e))}finally{a.getModel().endUpdate()}}),e,f)};Menus.prototype.styleChange=function(a,c,d,b,f,e,h,g){var k=this.createStyleChangeFunction(d,b);return a.addItem(c,null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph;null!=h&&a.cellEditor.isContentEditing()?h():k(g)}),e,f)};
@@ -3218,8 +3221,8 @@ Toolbar.prototype.createLabel=function(a,c){var d=document.createElement("a");d.
 Toolbar.prototype.addMenuHandler=function(a,c,d,b){if(null!=d){var f=this.editorUi.editor.graph,e=null,h=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(g){if(h&&(null==a.enabled||a.enabled)){f.popupMenuHandler.hideMenu();e=new mxPopupMenu(d);e.div.className+=" geToolbarMenu";e.showDisabled=b;e.labels=c;e.autoExpand=!0;var k=mxUtils.getOffset(a);e.popup(k.x,k.y+a.offsetHeight,null,g);this.editorUi.setCurrentMenu(e,a);!c&&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()});e.addListener(mxEvent.EVENT_HIDE,mxUtils.bind(this,function(){this.currentElt=null}))}h=!0;mxEvent.consume(g)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){h=this.currentElt!=a;b.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";var c=mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)?20:0;a.setAttribute("width",(Editor.useLocalStorage?640:320)+c+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+c+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=
-function(a,c,d,b){function f(){var a=e(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);a.style.marginBottom="8px";return a}function e(a,b,c,d){b=null!=b?b:12;var e=document.createElement("table");e.style.borderCollapse="collapse";e.setAttribute("cellspacing","0");e.style.marginBottom="20px";e.style.cellSpacing="0px";var k=document.createElement("tbody");e.appendChild(k);for(var m=a.length/b,n=0;n<m;n++){for(var p=document.createElement("tr"),q=0;q<b;q++)(function(a){var b=
-document.createElement("td");b.style.border="1px solid black";b.style.padding="0px";b.style.width="16px";b.style.height="16px";null==a&&(a=c);"none"==a?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor="#"+a;p.appendChild(b);null!=a&&(b.style.cursor="pointer",mxEvent.addListener(b,"click",function(){"none"==a?(g.fromString("ffffff"),h.value="none"):g.fromString(a)}))})(a[n*b+q]);k.appendChild(p)}d&&(a=document.createElement("td"),a.setAttribute("title",mxResources.get("reset")),
+function(a,c,d,b){function f(){var a=e(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);a.style.marginBottom="8px";return a}function e(a,b,c,d){b=null!=b?b:12;var e=document.createElement("table");e.style.borderCollapse="collapse";e.setAttribute("cellspacing","0");e.style.marginBottom="20px";e.style.cellSpacing="0px";var k=document.createElement("tbody");e.appendChild(k);for(var m=a.length/b,n=0;n<m;n++){for(var p=document.createElement("tr"),u=0;u<b;u++)(function(a){var b=
+document.createElement("td");b.style.border="1px solid black";b.style.padding="0px";b.style.width="16px";b.style.height="16px";null==a&&(a=c);"none"==a?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor="#"+a;p.appendChild(b);null!=a&&(b.style.cursor="pointer",mxEvent.addListener(b,"click",function(){"none"==a?(g.fromString("ffffff"),h.value="none"):g.fromString(a)}))})(a[n*b+u]);k.appendChild(p)}d&&(a=document.createElement("td"),a.setAttribute("title",mxResources.get("reset")),
 a.style.border="1px solid black",a.style.padding="0px",a.style.width="16px",a.style.height="16px",a.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",a.style.backgroundPosition="center center",a.style.backgroundRepeat="no-repeat",a.style.cursor="pointer",p.appendChild(a),mxEvent.addListener(a,"click",function(){ColorDialog.resetRecentColors();e.parentNode.replaceChild(f(),e)}));l.appendChild(e);return e}this.editorUi=a;var h=document.createElement("input");h.style.marginBottom="10px";
 h.style.width="216px";mxClient.IS_IE&&(h.style.marginTop="10px",document.body.appendChild(h));this.init=function(){mxClient.IS_TOUCH||h.focus()};var g=new jscolor.color(h);g.pickerOnfocus=!1;g.showPicker();var k=document.createElement("div");jscolor.picker.box.style.position="relative";jscolor.picker.box.style.width="230px";jscolor.picker.box.style.height="100px";jscolor.picker.box.style.paddingBottom="10px";k.appendChild(jscolor.picker.box);var l=document.createElement("center");k.appendChild(h);
 mxUtils.br(k);f();var m=e(this.presetColors);m.style.marginBottom="8px";m=e(this.defaultColors);m.style.marginBottom="16px";k.appendChild(l);m=document.createElement("div");m.style.textAlign="right";m.style.whiteSpace="nowrap";var p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=b&&b()});p.className="geBtn";a.editor.cancelFirst&&m.appendChild(p);var n=null!=d?d:this.createApplyFunction();d=mxUtils.button(mxResources.get("apply"),function(){var b=h.value;ColorDialog.addRecentColor(b,
@@ -3229,43 +3232,43 @@ ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,fu
 ColorDialog.addRecentColor=function(a,c){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=c&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
 var AboutDialog=function(a){var c=document.createElement("div");c.setAttribute("align","center");var d=document.createElement("h3");mxUtils.write(d,mxResources.get("about")+" GraphEditor");c.appendChild(d);d=document.createElement("img");d.style.border="0px";d.setAttribute("width","176");d.setAttribute("width","151");d.setAttribute("src",IMAGE_PATH+"/logo.png");c.appendChild(d);mxUtils.br(c);mxUtils.write(c,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(c);d=document.createElement("a");d.setAttribute("href",
 "http://www.jgraph.com/");d.setAttribute("target","_blank");mxUtils.write(d,"www.jgraph.com");c.appendChild(d);mxUtils.br(c);mxUtils.br(c);d=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});d.className="geBtn gePrimaryBtn";c.appendChild(d);this.container=c},FilenameDialog=function(a,c,d,b,f,e,h,g,k,l){k=null!=k?k:!0;var m,p,n=document.createElement("table"),u=document.createElement("tbody");n.style.marginTop="8px";m=document.createElement("tr");p=document.createElement("td");p.style.whiteSpace=
-"nowrap";p.style.fontSize="10pt";p.style.width="120px";mxUtils.write(p,(f||mxResources.get("filename"))+":");m.appendChild(p);var q=document.createElement("input");q.setAttribute("value",c||"");q.style.marginLeft="4px";q.style.width="180px";var r=mxUtils.button(d,function(){if(null==e||e(q.value))k&&a.hideDialog(),b(q.value)});r.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==h)if(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():
-document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=n.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=q,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&
-(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(q.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),r.click());a.stopPropagation();a.preventDefault()}))}}};p=document.createElement("td");p.appendChild(q);m.appendChild(p);null==f&&null!=h||u.appendChild(m);null!=h&&(m=document.createElement("tr"),p=document.createElement("td"),p.colSpan=2,p.appendChild(h),m.appendChild(p),u.appendChild(m));m=document.createElement("tr");p=document.createElement("td");
-p.colSpan=2;p.style.paddingTop="20px";p.style.whiteSpace="nowrap";p.setAttribute("align","right");c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});c.className="geBtn";a.editor.cancelFirst&&p.appendChild(c);null!=g&&(d=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),d.className="geBtn",p.appendChild(d));mxEvent.addListener(q,"keypress",function(a){13==a.keyCode&&r.click()});p.appendChild(r);a.editor.cancelFirst||p.appendChild(c);m.appendChild(p);
-u.appendChild(m);n.appendChild(u);this.container=n},TextareaDialog=function(a,c,d,b,f,e,h,g,k,l,m,p){h=null!=h?h:300;g=null!=g?g:120;l=null!=l?l:!1;var n,u,q=document.createElement("table"),r=document.createElement("tbody");n=document.createElement("tr");u=document.createElement("td");u.style.fontSize="10pt";u.style.width="100px";mxUtils.write(u,c);n.appendChild(u);r.appendChild(n);n=document.createElement("tr");u=document.createElement("td");var t=document.createElement("textarea");m&&t.setAttribute("wrap",
-"off");t.setAttribute("spellcheck","false");t.setAttribute("autocorrect","off");t.setAttribute("autocomplete","off");t.setAttribute("autocapitalize","off");mxUtils.write(t,d||"");t.style.resize="none";t.style.width=h+"px";t.style.height=g+"px";this.textarea=t;this.init=function(){t.focus();t.scrollTop=0};u.appendChild(t);n.appendChild(u);r.appendChild(n);n=document.createElement("tr");u=document.createElement("td");u.style.paddingTop="14px";u.style.whiteSpace="nowrap";u.setAttribute("align","right");
-c=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});c.className="geBtn";a.editor.cancelFirst&&u.appendChild(c);null!=k&&k(u,t);null!=b&&(k=mxUtils.button(p||mxResources.get("apply"),function(){l||a.hideDialog();b(t.value)}),k.className="geBtn gePrimaryBtn",u.appendChild(k));a.editor.cancelFirst||u.appendChild(c);n.appendChild(u);r.appendChild(n);q.appendChild(r);this.container=q},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign=
+"nowrap";p.style.fontSize="10pt";p.style.width="120px";mxUtils.write(p,(f||mxResources.get("filename"))+":");m.appendChild(p);var r=document.createElement("input");r.setAttribute("value",c||"");r.style.marginLeft="4px";r.style.width="180px";var q=mxUtils.button(d,function(){if(null==e||e(r.value))k&&a.hideDialog(),b(r.value)});q.className="geBtn gePrimaryBtn";this.init=function(){if(null!=f||null==h)if(r.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?r.select():
+document.execCommand("selectAll",!1,null),Graph.fileSupport){var a=n.parentNode;if(null!=a){var b=null;mxEvent.addListener(a,"dragleave",function(a){null!=b&&(b.style.backgroundColor="",b=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(a){null==b&&(!mxClient.IS_IE||10<document.documentMode)&&(b=r,b.style.backgroundColor="#ebf2f9");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=b&&
+(b.style.backgroundColor="",b=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(r.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),q.click());a.stopPropagation();a.preventDefault()}))}}};p=document.createElement("td");p.appendChild(r);m.appendChild(p);null==f&&null!=h||u.appendChild(m);null!=h&&(m=document.createElement("tr"),p=document.createElement("td"),p.colSpan=2,p.appendChild(h),m.appendChild(p),u.appendChild(m));m=document.createElement("tr");p=document.createElement("td");
+p.colSpan=2;p.style.paddingTop="20px";p.style.whiteSpace="nowrap";p.setAttribute("align","right");c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=l&&l()});c.className="geBtn";a.editor.cancelFirst&&p.appendChild(c);null!=g&&(d=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(g)}),d.className="geBtn",p.appendChild(d));mxEvent.addListener(r,"keypress",function(a){13==a.keyCode&&q.click()});p.appendChild(q);a.editor.cancelFirst||p.appendChild(c);m.appendChild(p);
+u.appendChild(m);n.appendChild(u);this.container=n},TextareaDialog=function(a,c,d,b,f,e,h,g,k,l,m,p){h=null!=h?h:300;g=null!=g?g:120;l=null!=l?l:!1;var n,u,r=document.createElement("table"),q=document.createElement("tbody");n=document.createElement("tr");u=document.createElement("td");u.style.fontSize="10pt";u.style.width="100px";mxUtils.write(u,c);n.appendChild(u);q.appendChild(n);n=document.createElement("tr");u=document.createElement("td");var t=document.createElement("textarea");m&&t.setAttribute("wrap",
+"off");t.setAttribute("spellcheck","false");t.setAttribute("autocorrect","off");t.setAttribute("autocomplete","off");t.setAttribute("autocapitalize","off");mxUtils.write(t,d||"");t.style.resize="none";t.style.width=h+"px";t.style.height=g+"px";this.textarea=t;this.init=function(){t.focus();t.scrollTop=0};u.appendChild(t);n.appendChild(u);q.appendChild(n);n=document.createElement("tr");u=document.createElement("td");u.style.paddingTop="14px";u.style.whiteSpace="nowrap";u.setAttribute("align","right");
+c=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=f&&f()});c.className="geBtn";a.editor.cancelFirst&&u.appendChild(c);null!=k&&k(u,t);null!=b&&(k=mxUtils.button(p||mxResources.get("apply"),function(){l||a.hideDialog();b(t.value)}),k.className="geBtn gePrimaryBtn",u.appendChild(k));a.editor.cancelFirst||u.appendChild(c);n.appendChild(u);q.appendChild(n);r.appendChild(q);this.container=r},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign=
 "right";var d=document.createElement("textarea");d.setAttribute("wrap","off");d.setAttribute("spellcheck","false");d.setAttribute("autocorrect","off");d.setAttribute("autocomplete","off");d.setAttribute("autocapitalize","off");d.style.overflow="auto";d.style.resize="none";d.style.width="600px";d.style.height="360px";d.style.marginBottom="16px";d.value=mxUtils.getPrettyXml(a.editor.getGraphXml());c.appendChild(d);this.init=function(){d.focus()};Graph.fileSupport&&(d.addEventListener("dragover",function(a){a.stopPropagation();
 a.preventDefault()},!1),d.addEventListener("drop",function(b){b.stopPropagation();b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var c=new FileReader;c.onload=function(a){d.value=a.target.result};c.readAsText(b)}else d.value=a.extractGraphModelFromEvent(b)},!1));var b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.className="geBtn";a.editor.cancelFirst&&c.appendChild(b);var f=document.createElement("select");f.style.width="180px";f.className=
 "geBtn";if(a.editor.graph.isEnabled()){var e=document.createElement("option");e.setAttribute("value","replace");mxUtils.write(e,mxResources.get("replaceExistingDrawing"));f.appendChild(e)}e=document.createElement("option");e.setAttribute("value","new");mxUtils.write(e,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&f.appendChild(e);a.editor.graph.isEnabled()&&(e=document.createElement("option"),e.setAttribute("value","import"),mxUtils.write(e,mxResources.get("addToExistingDrawing")),
 f.appendChild(e));c.appendChild(f);e=mxUtils.button(mxResources.get("ok"),function(){var b=a.editor.graph.zapGremlins(mxUtils.trim(d.value)),c=null;if("new"==f.value)a.hideDialog(),a.editor.editAsNew(b);else if("replace"==f.value){a.editor.graph.model.beginUpdate();try{a.editor.setGraphXml(mxUtils.parseXml(b).documentElement),a.hideDialog()}catch(p){c=p}finally{a.editor.graph.model.endUpdate()}}else if("import"==f.value){a.editor.graph.model.beginUpdate();try{var e=mxUtils.parseXml(b),l=new mxGraphModel;
 (new mxCodec(e)).decode(e.documentElement,l);var m=l.getChildren(l.getChildAt(l.getRoot(),0));a.editor.graph.setSelectionCells(a.editor.graph.importCells(m));a.hideDialog()}catch(p){c=p}finally{a.editor.graph.model.endUpdate()}}null!=c&&mxUtils.alert(c.message)});e.className="geBtn gePrimaryBtn";c.appendChild(e);a.editor.cancelFirst||c.appendChild(b);this.container=c};EditDiagramDialog.showNewWindowOption=!0;
-var ExportDialog=function(a){function c(){var a=m.value,b=a.lastIndexOf(".");m.value=0<b?a.substring(0,b+1)+p.value:a+"."+p.value;"xml"===p.value?(n.setAttribute("disabled","true"),u.setAttribute("disabled","true"),q.setAttribute("disabled","true"),t.setAttribute("disabled","true")):(n.removeAttribute("disabled"),u.removeAttribute("disabled"),q.removeAttribute("disabled"),t.removeAttribute("disabled"));"png"===p.value||"svg"===p.value?r.removeAttribute("disabled"):r.setAttribute("disabled","disabled")}
-function d(){u.style.backgroundColor=u.value*q.value>MAX_AREA||0>=u.value?"red":"";q.style.backgroundColor=u.value*q.value>MAX_AREA||0>=q.value?"red":""}var b=a.editor.graph,f=b.getGraphBounds(),e=b.view.scale,h=Math.ceil(f.width/e),g=Math.ceil(f.height/e),k,e=document.createElement("table"),l=document.createElement("tbody");e.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";k.style.width="100px";mxUtils.write(k,
+var ExportDialog=function(a){function c(){var a=m.value,b=a.lastIndexOf(".");m.value=0<b?a.substring(0,b+1)+p.value:a+"."+p.value;"xml"===p.value?(n.setAttribute("disabled","true"),u.setAttribute("disabled","true"),r.setAttribute("disabled","true"),t.setAttribute("disabled","true")):(n.removeAttribute("disabled"),u.removeAttribute("disabled"),r.removeAttribute("disabled"),t.removeAttribute("disabled"));"png"===p.value||"svg"===p.value?q.removeAttribute("disabled"):q.setAttribute("disabled","disabled")}
+function d(){u.style.backgroundColor=u.value*r.value>MAX_AREA||0>=u.value?"red":"";r.style.backgroundColor=u.value*r.value>MAX_AREA||0>=r.value?"red":""}var b=a.editor.graph,f=b.getGraphBounds(),e=b.view.scale,h=Math.ceil(f.width/e),g=Math.ceil(f.height/e),k,e=document.createElement("table"),l=document.createElement("tbody");e.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";k.style.width="100px";mxUtils.write(k,
 mxResources.get("filename")+":");f.appendChild(k);var m=document.createElement("input");m.setAttribute("value",a.editor.getOrCreateFilename());m.style.width="180px";k=document.createElement("td");k.appendChild(m);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("format")+":");f.appendChild(k);var p=document.createElement("select");p.style.width="180px";k=document.createElement("option");k.setAttribute("value",
 "png");mxUtils.write(k,mxResources.get("formatPng"));p.appendChild(k);k=document.createElement("option");ExportDialog.showGifOption&&(k.setAttribute("value","gif"),mxUtils.write(k,mxResources.get("formatGif")),p.appendChild(k));k=document.createElement("option");k.setAttribute("value","jpg");mxUtils.write(k,mxResources.get("formatJpg"));p.appendChild(k);k=document.createElement("option");k.setAttribute("value","pdf");mxUtils.write(k,mxResources.get("formatPdf"));p.appendChild(k);k=document.createElement("option");
 k.setAttribute("value","svg");mxUtils.write(k,mxResources.get("formatSvg"));p.appendChild(k);ExportDialog.showXmlOption&&(k=document.createElement("option"),k.setAttribute("value","xml"),mxUtils.write(k,mxResources.get("formatXml")),p.appendChild(k));k=document.createElement("td");k.appendChild(p);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("zoom")+" (%):");f.appendChild(k);var n=document.createElement("input");
 n.setAttribute("type","number");n.setAttribute("value","100");n.style.width="180px";k=document.createElement("td");k.appendChild(n);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("width")+":");f.appendChild(k);var u=document.createElement("input");u.setAttribute("value",h);u.style.width="180px";k=document.createElement("td");k.appendChild(u);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");
-k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("height")+":");f.appendChild(k);var q=document.createElement("input");q.setAttribute("value",g);q.style.width="180px";k=document.createElement("td");k.appendChild(q);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("background")+":");f.appendChild(k);var r=document.createElement("input");r.setAttribute("type",
-"checkbox");r.checked=null==b.background||b.background==mxConstants.NONE;k=document.createElement("td");k.appendChild(r);mxUtils.write(k,mxResources.get("transparent"));f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("borderWidth")+":");f.appendChild(k);var t=document.createElement("input");t.setAttribute("type","number");t.setAttribute("value",ExportDialog.lastBorderValue);t.style.width="180px";
-k=document.createElement("td");k.appendChild(t);f.appendChild(k);l.appendChild(f);e.appendChild(l);mxEvent.addListener(p,"change",c);c();mxEvent.addListener(n,"change",function(){var a=Math.max(0,parseFloat(n.value)||100)/100;n.value=parseFloat((100*a).toFixed(2));0<h?(u.value=Math.floor(h*a),q.value=Math.floor(g*a)):(n.value="100",u.value=h,q.value=g);d()});mxEvent.addListener(u,"change",function(){var a=parseInt(u.value)/h;0<a?(n.value=parseFloat((100*a).toFixed(2)),q.value=Math.floor(g*a)):(n.value=
-"100",u.value=h,q.value=g);d()});mxEvent.addListener(q,"change",function(){var a=parseInt(q.value)/g;0<a?(n.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(n.value="100",u.value=h,q.value=g);d()});f=document.createElement("tr");k=document.createElement("td");k.setAttribute("align","right");k.style.paddingTop="22px";k.colSpan=2;var w=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(n.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var c=
-m.value,d=p.value,e=Math.max(0,parseFloat(n.value)||100)/100,g=Math.max(0,parseInt(t.value)),f=b.background;if(("svg"==d||"png"==d)&&r.checked)f=null;else if(null==f||f==mxConstants.NONE)f="#ffffff";ExportDialog.lastBorderValue=g;ExportDialog.exportFile(a,c,d,f,e,g)}}));w.className="geBtn gePrimaryBtn";var v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst?(k.appendChild(v),k.appendChild(w)):(k.appendChild(w),k.appendChild(v));f.appendChild(k);
+k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("height")+":");f.appendChild(k);var r=document.createElement("input");r.setAttribute("value",g);r.style.width="180px";k=document.createElement("td");k.appendChild(r);f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("background")+":");f.appendChild(k);var q=document.createElement("input");q.setAttribute("type",
+"checkbox");q.checked=null==b.background||b.background==mxConstants.NONE;k=document.createElement("td");k.appendChild(q);mxUtils.write(k,mxResources.get("transparent"));f.appendChild(k);l.appendChild(f);f=document.createElement("tr");k=document.createElement("td");k.style.fontSize="10pt";mxUtils.write(k,mxResources.get("borderWidth")+":");f.appendChild(k);var t=document.createElement("input");t.setAttribute("type","number");t.setAttribute("value",ExportDialog.lastBorderValue);t.style.width="180px";
+k=document.createElement("td");k.appendChild(t);f.appendChild(k);l.appendChild(f);e.appendChild(l);mxEvent.addListener(p,"change",c);c();mxEvent.addListener(n,"change",function(){var a=Math.max(0,parseFloat(n.value)||100)/100;n.value=parseFloat((100*a).toFixed(2));0<h?(u.value=Math.floor(h*a),r.value=Math.floor(g*a)):(n.value="100",u.value=h,r.value=g);d()});mxEvent.addListener(u,"change",function(){var a=parseInt(u.value)/h;0<a?(n.value=parseFloat((100*a).toFixed(2)),r.value=Math.floor(g*a)):(n.value=
+"100",u.value=h,r.value=g);d()});mxEvent.addListener(r,"change",function(){var a=parseInt(r.value)/g;0<a?(n.value=parseFloat((100*a).toFixed(2)),u.value=Math.floor(h*a)):(n.value="100",u.value=h,r.value=g);d()});f=document.createElement("tr");k=document.createElement("td");k.setAttribute("align","right");k.style.paddingTop="22px";k.colSpan=2;var w=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(n.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var c=
+m.value,d=p.value,e=Math.max(0,parseFloat(n.value)||100)/100,g=Math.max(0,parseInt(t.value)),f=b.background;if(("svg"==d||"png"==d)&&q.checked)f=null;else if(null==f||f==mxConstants.NONE)f="#ffffff";ExportDialog.lastBorderValue=g;ExportDialog.exportFile(a,c,d,f,e,g)}}));w.className="geBtn gePrimaryBtn";var v=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});v.className="geBtn";a.editor.cancelFirst?(k.appendChild(v),k.appendChild(w)):(k.appendChild(w),k.appendChild(v));f.appendChild(k);
 l.appendChild(f);e.appendChild(l);this.container=e};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0;
 ExportDialog.exportFile=function(a,c,d,b,f,e){var h=a.editor.graph;if("xml"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),c,d);else if("svg"==d)ExportDialog.saveLocalFile(a,mxUtils.getXml(h.getSvg(b,f,e)),c,d);else{var g=h.getGraphBounds(),k=mxUtils.createXmlDocument(),l=k.createElement("output");k.appendChild(l);k=new mxXmlCanvas2D(l);k.translate(Math.floor((e/f-g.x)/h.view.scale),Math.floor((e/f-g.y)/h.view.scale));k.scale(f/h.view.scale);(new mxImageExport).drawState(h.getView().getState(h.model.root),
 k);l="xml="+encodeURIComponent(mxUtils.getXml(l));k=Math.ceil(g.width*f/h.view.scale+2*e);f=Math.ceil(g.height*f/h.view.scale+2*e);l.length<=MAX_REQUEST_SIZE&&k*f<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+d+"&filename="+encodeURIComponent(c)+"&bg="+(null!=b?b:"none")+"&w="+k+"&h="+f+"&"+l)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
 ExportDialog.saveLocalFile=function(a,c,d,b){c.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(d)+"&format="+b)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
 var EditDataDialog=function(a,c){function d(){0<w.value.length?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}var b=document.createElement("div"),f=a.editor.graph,e=f.getModel().getValue(c);if(!mxUtils.isNode(e)){var h=mxUtils.createXmlDocument().createElement("object");h.setAttribute("label",e||"");e=h}var g=new mxForm("properties");g.table.style.width="100%";for(var k=e.attributes,l=[],m=[],p=0,n=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,
 c):null,u=function(a,b){var c=document.createElement("div");c.style.position="relative";c.style.paddingRight="20px";c.style.boxSizing="border-box";c.style.width="100%";var d=document.createElement("a"),e=mxUtils.createImage(Dialog.prototype.closeImage);e.style.height="9px";e.style.fontSize="9px";e.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";d.className="geButton";d.setAttribute("title",mxResources.get("delete"));d.style.position="absolute";d.style.top="4px";d.style.right="0px";d.style.margin=
-"0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){m[c]=null;g.table.deleteRow(b+(null!=n?1:0));break}null!=m[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;m[a]=g.addTextarea(l[p]+":",c,2);m[a].style.width="100%";u(m[a],b)},q=[],r=f.getModel().getParent(c)==f.getModel().getRoot(),t=0;t<k.length;t++)!r&&
-"label"==k[t].nodeName||"placeholders"==k[t].nodeName||q.push({name:k[t].nodeName,value:k[t].nodeValue});q.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=n&&(k=document.createElement("input"),k.style.width="280px",k.style.textAlign="center",k.setAttribute("type","text"),k.setAttribute("readOnly","true"),k.setAttribute("value",n),g.addField(mxResources.get("id")+":",k));for(t=0;t<q.length;t++)h(p,q[t].name,q[t].value),p++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;";
-h.appendChild(g.table);q=document.createElement("div");q.style.whiteSpace="nowrap";q.style.marginTop="6px";var w=document.createElement("input");w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"18":"22");w.style.marginLeft="2px";q.appendChild(w);h.appendChild(q);b.appendChild(h);var v=mxUtils.button(mxResources.get("addProperty"),function(){var a=w.value;if(0<a.length&&"label"!=a&&"placeholders"!=
-a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=m[b])m[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),m.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";m.push(c);u(c,a);c.focus()}w.value=""}catch(F){mxUtils.alert(F)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=function(){0<m.length?m[0].focus():w.focus()};v.setAttribute("disabled","disabled");v.style.marginLeft="10px";v.style.width="144px";q.appendChild(v);h=
-mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.className="geBtn";q=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var b=!1,d=0;d<l.length;d++)null==m[d]?e.removeAttribute(l[d]):(e.setAttribute(l[d],m[d].value),b=b||"placeholder"==l[d]&&"1"==e.getAttribute("placeholders"));b&&e.removeAttribute("label");f.getModel().setValue(c,e)}catch(D){mxUtils.alert(D)}});q.className="geBtn gePrimaryBtn";mxEvent.addListener(w,
-"keyup",d);mxEvent.addListener(w,"change",d);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(c)||a.editor.graph.getModel().isEdge(c)){r=document.createElement("span");r.style.marginRight="10px";t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="6px";"1"==e.getAttribute("placeholders")&&(t.setAttribute("checked","checked"),t.defaultChecked=!0);
-mxEvent.addListener(t,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")});r.appendChild(t);mxUtils.write(r,mxResources.get("placeholders"));if(null!=EditDataDialog.placeholderHelpLink){t=document.createElement("a");t.setAttribute("href",EditDataDialog.placeholderHelpLink);t.setAttribute("title",mxResources.get("help"));t.setAttribute("target","_blank");t.style.marginLeft="8px";t.style.cursor="help";var z=document.createElement("img");
-mxUtils.setOpacity(z,50);z.style.height="16px";z.style.width="16px";z.setAttribute("border","0");z.setAttribute("valign","middle");z.style.marginTop=mxClient.IS_IE11?"0px":"-4px";z.setAttribute("src",Editor.helpImage);t.appendChild(z);r.appendChild(t)}k.appendChild(r)}a.editor.cancelFirst?(k.appendChild(h),k.appendChild(q)):(k.appendChild(q),k.appendChild(h));b.appendChild(k);this.container=b};
+"0px";d.style.width="9px";d.style.height="9px";d.style.cursor="pointer";d.appendChild(e);e=function(a){return function(){for(var b=0,c=0;c<l.length;c++){if(l[c]==a){m[c]=null;g.table.deleteRow(b+(null!=n?1:0));break}null!=m[c]&&b++}}}(b);mxEvent.addListener(d,"click",e);e=a.parentNode;c.appendChild(a);c.appendChild(d);e.appendChild(c)},h=function(a,b,c){l[a]=b;m[a]=g.addTextarea(l[p]+":",c,2);m[a].style.width="100%";u(m[a],b)},r=[],q=f.getModel().getParent(c)==f.getModel().getRoot(),t=0;t<k.length;t++)!q&&
+"label"==k[t].nodeName||"placeholders"==k[t].nodeName||r.push({name:k[t].nodeName,value:k[t].nodeValue});r.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0});null!=n&&(k=document.createElement("input"),k.style.width="280px",k.style.textAlign="center",k.setAttribute("type","text"),k.setAttribute("readOnly","true"),k.setAttribute("value",n),g.addField(mxResources.get("id")+":",k));for(t=0;t<r.length;t++)h(p,r[t].name,r[t].value),p++;h=document.createElement("div");h.style.cssText="position:absolute;left:30px;right:30px;overflow-y:auto;top:30px;bottom:80px;";
+h.appendChild(g.table);r=document.createElement("div");r.style.whiteSpace="nowrap";r.style.marginTop="6px";var w=document.createElement("input");w.setAttribute("placeholder",mxResources.get("enterPropertyName"));w.setAttribute("type","text");w.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"18":"22");w.style.marginLeft="2px";r.appendChild(w);h.appendChild(r);b.appendChild(h);var v=mxUtils.button(mxResources.get("addProperty"),function(){var a=w.value;if(0<a.length&&"label"!=a&&"placeholders"!=
+a&&0>a.indexOf(":"))try{var b=mxUtils.indexOf(l,a);if(0<=b&&null!=m[b])m[b].focus();else{e.cloneNode(!1).setAttribute(a,"");0<=b&&(l.splice(b,1),m.splice(b,1));l.push(a);var c=g.addTextarea(a+":","",2);c.style.width="100%";m.push(c);u(c,a);c.focus()}w.value=""}catch(E){mxUtils.alert(E)}else mxUtils.alert(mxResources.get("invalidName"))});this.init=function(){0<m.length?m[0].focus():w.focus()};v.setAttribute("disabled","disabled");v.style.marginLeft="10px";v.style.width="144px";r.appendChild(v);h=
+mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});h.className="geBtn";r=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var b=!1,d=0;d<l.length;d++)null==m[d]?e.removeAttribute(l[d]):(e.setAttribute(l[d],m[d].value),b=b||"placeholder"==l[d]&&"1"==e.getAttribute("placeholders"));b&&e.removeAttribute("label");f.getModel().setValue(c,e)}catch(C){mxUtils.alert(C)}});r.className="geBtn gePrimaryBtn";mxEvent.addListener(w,
+"keyup",d);mxEvent.addListener(w,"change",d);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(c)||a.editor.graph.getModel().isEdge(c)){q=document.createElement("span");q.style.marginRight="10px";t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="6px";"1"==e.getAttribute("placeholders")&&(t.setAttribute("checked","checked"),t.defaultChecked=!0);
+mxEvent.addListener(t,"click",function(){"1"==e.getAttribute("placeholders")?e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")});q.appendChild(t);mxUtils.write(q,mxResources.get("placeholders"));if(null!=EditDataDialog.placeholderHelpLink){t=document.createElement("a");t.setAttribute("href",EditDataDialog.placeholderHelpLink);t.setAttribute("title",mxResources.get("help"));t.setAttribute("target","_blank");t.style.marginLeft="8px";t.style.cursor="help";var z=document.createElement("img");
+mxUtils.setOpacity(z,50);z.style.height="16px";z.style.width="16px";z.setAttribute("border","0");z.setAttribute("valign","middle");z.style.marginTop=mxClient.IS_IE11?"0px":"-4px";z.setAttribute("src",Editor.helpImage);t.appendChild(z);q.appendChild(t)}k.appendChild(q)}a.editor.cancelFirst?(k.appendChild(h),k.appendChild(r)):(k.appendChild(r),k.appendChild(h));b.appendChild(k);this.container=b};
 EditDataDialog.getDisplayIdForCell=function(a,c){var d=null;null!=a.editor.graph.getModel().getParent(c)&&(d=c.getId());return d};EditDataDialog.placeholderHelpLink=null;
 var LinkDialog=function(a,c,d,b){var f=document.createElement("div");mxUtils.write(f,mxResources.get("editLink")+":");var e=document.createElement("div");e.className="geTitle";e.style.backgroundColor="transparent";e.style.borderColor="transparent";e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.cursor="default";mxClient.IS_VML||(e.style.paddingRight="20px");var h=document.createElement("input");h.setAttribute("value",c);h.setAttribute("placeholder","http://www.example.com/");h.setAttribute("type",
 "text");h.style.marginTop="6px";h.style.width="400px";h.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";h.style.backgroundRepeat="no-repeat";h.style.backgroundPosition="100% 50%";h.style.paddingRight="14px";c=document.createElement("div");c.setAttribute("title",mxResources.get("reset"));c.style.position="relative";c.style.left="-16px";c.style.width="12px";c.style.height="14px";c.style.cursor="pointer";c.style.display=mxClient.IS_VML?"inline":"inline-block";c.style.top=(mxClient.IS_VML?
@@ -3279,20 +3282,20 @@ arguments);b.gridEnabled=!1;b.pageScale=h.pageScale;b.pageFormat=h.pageFormat;b.
 function(){e();l.update(!0)});if(l.outline.dialect==mxConstants.DIALECT_SVG){var p=a.actions.get("zoomIn"),n=a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(a,b){for(var c=!1,d=mxEvent.getSource(a);null!=d;){if(d==l.outline.view.canvas.ownerSVGElement){c=!0;break}d=d.parentNode}c&&(b?p.funct():n.funct(),mxEvent.consume(a))})}},LayersWindow=function(a,c,d,b,f){function e(b){if(g.isEnabled()&&null!=b){var c=g.convertValueToString(b),c=new FilenameDialog(a,c||mxResources.get("background"),
 mxResources.get("rename"),mxUtils.bind(this,function(a){null!=a&&g.cellLabelChanged(b,a)}),mxResources.get("enterName"));a.showDialog(c.container,300,100,!0,!0);c.init()}}function h(){function a(a,b,c,d){var f=document.createElement("div");f.className="geToolbarContainer";f.style.overflow="hidden";f.style.position="relative";f.style.padding="4px";f.style.height="22px";f.style.display="block";f.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;f.style.borderWidth=
 "0px 0px 1px 0px";f.style.borderColor="#c3c3c3";f.style.borderStyle="solid";f.style.whiteSpace="nowrap";f.setAttribute("title",b);var k=document.createElement("div");k.style.display="inline-block";k.style.width="100%";k.style.textOverflow="ellipsis";k.style.overflow="hidden";mxEvent.addListener(f,"dragover",function(b){b.dataTransfer.dropEffect="move";n=a;b.stopPropagation();b.preventDefault()});mxEvent.addListener(f,"dragstart",function(a){p=f;mxClient.IS_FF&&a.dataTransfer.setData("Text","<layer/>")});
-mxEvent.addListener(f,"dragend",function(a){null!=p&&null!=n&&g.addCell(c,g.model.root,n);n=p=null;a.stopPropagation();a.preventDefault()});var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","top");l.setAttribute("border","0");l.style.padding="4px";l.setAttribute("title",mxResources.get("lockUnlock"));var r=g.view.getState(c),t=null!=r?r.style:g.getCellStyle(c);"1"==mxUtils.getValue(t,"locked","0")?l.setAttribute("src",Dialog.prototype.lockedImage):l.setAttribute("src",
+mxEvent.addListener(f,"dragend",function(a){null!=p&&null!=n&&g.addCell(c,g.model.root,n);n=p=null;a.stopPropagation();a.preventDefault()});var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","top");l.setAttribute("border","0");l.style.padding="4px";l.setAttribute("title",mxResources.get("lockUnlock"));var q=g.view.getState(c),t=null!=q?q.style:g.getCellStyle(c);"1"==mxUtils.getValue(t,"locked","0")?l.setAttribute("src",Dialog.prototype.lockedImage):l.setAttribute("src",
 Dialog.prototype.unlockedImage);g.isEnabled()&&(l.style.cursor="pointer");mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){var b=null;g.getModel().beginUpdate();try{b="1"==mxUtils.getValue(t,"locked","0")?null:"1",g.setCellStyles("locked",b,[c])}finally{g.getModel().endUpdate()}"1"==b&&g.removeSelectionCells(g.getModel().getDescendants(c));mxEvent.consume(a)}});k.appendChild(l);l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("title",mxResources.get("hideIt",
 [c.value||mxResources.get("background")]));l.style.marginLeft="4px";l.style.marginRight="6px";l.style.marginTop="4px";k.appendChild(l);g.model.isVisible(c)&&(l.setAttribute("checked","checked"),l.defaultChecked=!0);mxEvent.addListener(l,"click",function(a){g.model.setVisible(c,!g.model.isVisible(c));mxEvent.consume(a)});mxUtils.write(k,b);f.appendChild(k);if(g.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_VML||mxClient.IS_IE&&10>document.documentMode)b=document.createElement("div"),
 b.style.display="block",b.style.textAlign="right",b.style.whiteSpace="nowrap",b.style.position="absolute",b.style.right="6px",b.style.top="6px",0<a&&(k=document.createElement("a"),k.setAttribute("title",mxResources.get("toBack")),k.className="geButton",k.style.cssFloat="none",k.innerHTML="&#9660;",k.style.width="14px",k.style.height="14px",k.style.fontSize="14px",k.style.margin="0px",k.style.marginTop="-1px",b.appendChild(k),mxEvent.addListener(k,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,
 a-1);mxEvent.consume(b)})),0<=a&&a<u-1&&(k=document.createElement("a"),k.setAttribute("title",mxResources.get("toFront")),k.className="geButton",k.style.cssFloat="none",k.innerHTML="&#9650;",k.style.width="14px",k.style.height="14px",k.style.fontSize="14px",k.style.margin="0px",k.style.marginTop="-1px",b.appendChild(k),mxEvent.addListener(k,"click",function(b){g.isEnabled()&&g.addCell(c,g.model.root,a+1);mxEvent.consume(b)})),f.appendChild(b);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&
-(f.setAttribute("draggable","true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});g.getDefaultParent()==c?(f.style.background="white"==Dialog.backdropColor?"#e6eff8":"#505759",f.style.fontWeight=g.isEnabled()?"bold":"",q=c):mxEvent.addListener(f,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),h())});m.appendChild(f)}u=g.model.getChildCount(g.model.root);
-m.innerHTML="";for(var b=u-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(q)||mxResources.get("background");t.setAttribute("title",mxResources.get("removeIt",[c]));w.setAttribute("title",mxResources.get("moveSelectionTo",[c]));z.setAttribute("title",mxResources.get("duplicateIt",[c]));v.setAttribute("title",mxResources.get("editData"));g.isSelectionEmpty()&&(w.className="geButton mxDisabled")}
+(f.setAttribute("draggable","true"),f.style.cursor="move")}mxEvent.addListener(f,"dblclick",function(a){var b=mxEvent.getSource(a).nodeName;"INPUT"!=b&&"IMG"!=b&&(e(c),mxEvent.consume(a))});g.getDefaultParent()==c?(f.style.background="white"==Dialog.backdropColor?"#e6eff8":"#505759",f.style.fontWeight=g.isEnabled()?"bold":"",r=c):mxEvent.addListener(f,"click",function(a){g.isEnabled()&&(g.setDefaultParent(d),g.view.setCurrentRoot(null),h())});m.appendChild(f)}u=g.model.getChildCount(g.model.root);
+m.innerHTML="";for(var b=u-1;0<=b;b--)mxUtils.bind(this,function(c){a(b,g.convertValueToString(c)||mxResources.get("background"),c,c)})(g.model.getChildAt(g.model.root,b));var c=g.convertValueToString(r)||mxResources.get("background");t.setAttribute("title",mxResources.get("removeIt",[c]));w.setAttribute("title",mxResources.get("moveSelectionTo",[c]));z.setAttribute("title",mxResources.get("duplicateIt",[c]));v.setAttribute("title",mxResources.get("editData"));g.isSelectionEmpty()&&(w.className="geButton mxDisabled")}
 var g=a.editor.graph,k=document.createElement("div");k.style.userSelect="none";k.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;k.style.border="1px solid whiteSmoke";k.style.height="100%";k.style.marginBottom="10px";k.style.overflow="auto";var l=EditorUi.compactUi?"26px":"30px",m=document.createElement("div");m.style.backgroundColor="white"==Dialog.backdropColor?"#dcdcdc":Dialog.backdropColor;m.style.position="absolute";m.style.overflow="auto";m.style.left="0px";
-m.style.right="0px";m.style.top="0px";m.style.bottom=parseInt(l)+7+"px";k.appendChild(m);var p=null,n=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";n=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,q=null,r=document.createElement("div");r.className="geToolbarContainer";r.style.position="absolute";r.style.bottom="0px";r.style.left="0px";r.style.right="0px";r.style.height=l;r.style.overflow=
-"hidden";r.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";r.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;r.style.borderWidth="1px 0px 0px 0px";r.style.borderColor="#c3c3c3";r.style.borderStyle="solid";r.style.display="block";r.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(r.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var t=l.cloneNode();t.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>';
-mxEvent.addListener(t,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(q);g.removeCells([q],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(t.className="geButton mxDisabled");r.appendChild(t);var w=l.cloneNode();
-w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(a){g.isEnabled()&&!g.isSelectionEmpty()&&g.moveCells(g.getSelectionCells(),0,0,!1,q)});r.appendChild(w);var v=l.cloneNode();v.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';v.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(v,"click",function(b){g.isEnabled()&&a.showDataDialog(q);mxEvent.consume(b)});g.isEnabled()||
-(v.className="geButton mxDisabled");r.appendChild(v);var z=l.cloneNode();z.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(z,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(q),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(z.className="geButton mxDisabled");
-r.appendChild(z);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(l.className="geButton mxDisabled");r.appendChild(l);k.appendChild(r);h();g.model.addListener(mxEvent.CHANGE,
+m.style.right="0px";m.style.top="0px";m.style.bottom=parseInt(l)+7+"px";k.appendChild(m);var p=null,n=null;mxEvent.addListener(k,"dragover",function(a){a.dataTransfer.dropEffect="move";n=0;a.stopPropagation();a.preventDefault()});mxEvent.addListener(k,"drop",function(a){a.stopPropagation();a.preventDefault()});var u=null,r=null,q=document.createElement("div");q.className="geToolbarContainer";q.style.position="absolute";q.style.bottom="0px";q.style.left="0px";q.style.right="0px";q.style.height=l;q.style.overflow=
+"hidden";q.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";q.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;q.style.borderWidth="1px 0px 0px 0px";q.style.borderColor="#c3c3c3";q.style.borderStyle="solid";q.style.display="block";q.style.whiteSpace="nowrap";mxClient.IS_QUIRKS&&(q.style.filter="none");l=document.createElement("a");l.className="geButton";mxClient.IS_QUIRKS&&(l.style.filter="none");var t=l.cloneNode();t.innerHTML='<div class="geSprite geSprite-delete" style="display:inline-block;"></div>';
+mxEvent.addListener(t,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.model.root.getIndex(r);g.removeCells([r],!1);0==g.model.getChildCount(g.model.root)?(g.model.add(g.model.root,new mxCell),g.setDefaultParent(null)):0<b&&b<=g.model.getChildCount(g.model.root)?g.setDefaultParent(g.model.getChildAt(g.model.root,b-1)):g.setDefaultParent(null)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(t.className="geButton mxDisabled");q.appendChild(t);var w=l.cloneNode();
+w.innerHTML='<div class="geSprite geSprite-insert" style="display:inline-block;"></div>';mxEvent.addListener(w,"click",function(a){g.isEnabled()&&!g.isSelectionEmpty()&&g.moveCells(g.getSelectionCells(),0,0,!1,r)});q.appendChild(w);var v=l.cloneNode();v.innerHTML='<div class="geSprite geSprite-dots" style="display:inline-block;"></div>';v.setAttribute("title",mxResources.get("rename"));mxEvent.addListener(v,"click",function(b){g.isEnabled()&&a.showDataDialog(r);mxEvent.consume(b)});g.isEnabled()||
+(v.className="geButton mxDisabled");q.appendChild(v);var z=l.cloneNode();z.innerHTML='<div class="geSprite geSprite-duplicate" style="display:inline-block;"></div>';mxEvent.addListener(z,"click",function(a){if(g.isEnabled()){a=null;g.model.beginUpdate();try{a=g.cloneCell(r),g.cellLabelChanged(a,mxResources.get("untitledLayer")),a.setVisible(!0),a=g.addCell(a,g.model.root),g.setDefaultParent(a)}finally{g.model.endUpdate()}null==a||g.isCellLocked(a)||g.selectAll(a)}});g.isEnabled()||(z.className="geButton mxDisabled");
+q.appendChild(z);l=l.cloneNode();l.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';l.setAttribute("title",mxResources.get("addLayer"));mxEvent.addListener(l,"click",function(a){if(g.isEnabled()){g.model.beginUpdate();try{var b=g.addCell(new mxCell(mxResources.get("untitledLayer")),g.model.root);g.setDefaultParent(b)}finally{g.model.endUpdate()}}mxEvent.consume(a)});g.isEnabled()||(l.className="geButton mxDisabled");q.appendChild(l);k.appendChild(q);h();g.model.addListener(mxEvent.CHANGE,
 function(){h()});g.selectionModel.addListener(mxEvent.CHANGE,function(){g.isSelectionEmpty()?w.className="geButton mxDisabled":w.className="geButton"});this.window=new mxWindow(mxResources.get("layers"),k,c,d,b,f,!0,!0);this.window.minimumSize=new mxRectangle(0,0,120,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.refreshLayers=h;this.window.setLocation=function(a,b){var c=window.innerHeight||
 document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var x=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",x);this.destroy=
 function(){mxEvent.removeListener(window,"resize",x);this.window.destroy()}};
@@ -3318,7 +3321,7 @@ a:null!=urlParams.libs&&0<urlParams.libs.length?decodeURIComponent(urlParams.lib
 e=0;e<f.entries.length;e++){var g=f.entries[e];if(null!=g.libs&&0<g.libs.length){for(var h=[],n=0;n<g.libs.length;n++)h.push(g.id+"."+n);this.showPalettes("",h,0<=mxUtils.indexOf(c,g.id))}}b&&(mxSettings.setLibraries(a),mxSettings.save())};Sidebar.prototype.init=function(){this.entries=[{title:mxResources.get("standard"),entries:[{title:mxResources.get("general"),id:"general",image:IMAGE_PATH+"/sidebar-general.png"},{title:mxResources.get("arrows"),id:"arrows2",image:IMAGE_PATH+"/sidebar-arrows2.png"},
 {title:mxResources.get("basic"),id:"basic",image:IMAGE_PATH+"/sidebar-basic.png"},{title:mxResources.get("clipart"),id:"clipart",image:IMAGE_PATH+"/sidebar-clipart.png"},{title:mxResources.get("flowchart"),id:"flowchart",image:IMAGE_PATH+"/sidebar-flowchart.png"}]},{title:mxResources.get("software"),entries:[{title:mxResources.get("android"),id:"android",image:IMAGE_PATH+"/sidebar-android.png"},{title:"Atlassian",id:"atlassian",image:IMAGE_PATH+"/sidebar-atlassian.png"},{title:mxResources.get("bootstrap"),
 id:"bootstrap",image:IMAGE_PATH+"/sidebar-bootstrap.png"},{title:"Data Flow Diagram",id:"dfd",image:IMAGE_PATH+"/sidebar-dfd.png"},{title:mxResources.get("entityRelation"),id:"er",image:IMAGE_PATH+"/sidebar-er.png"},{title:mxResources.get("ios"),id:"ios",image:IMAGE_PATH+"/sidebar-ios.png"},{title:mxResources.get("mockups"),id:"mockups",image:IMAGE_PATH+"/sidebar-mockups.png"},{title:"Sitemap",id:"sitemap",image:IMAGE_PATH+"/sidebar-sitemap.png"},{title:mxResources.get("uml"),id:"uml",image:IMAGE_PATH+
-"/sidebar-uml.png"}]},{title:mxResources.get("networking"),entries:[{title:"AWS17",id:"aws3",image:IMAGE_PATH+"/sidebar-aws3.png"},{title:"AWS18",id:"aws4",image:IMAGE_PATH+"/sidebar-aws4.png"},{title:"Allied Telesis",id:"allied_telesis",image:IMAGE_PATH+"/sidebar-allied_telesis.png"},{title:mxResources.get("aws3d"),id:"aws3d",image:IMAGE_PATH+"/sidebar-aws3d.png"},{title:mxResources.get("azure"),id:"azure",image:IMAGE_PATH+"/sidebar-azure.png"},{title:"Cloud & Enterprise",id:"mscae",image:IMAGE_PATH+
+"/sidebar-uml.png"}]},{title:mxResources.get("networking"),entries:[{title:"AWS17",id:"aws3",image:IMAGE_PATH+"/sidebar-aws3.png"},{title:"AWS19",id:"aws4",image:IMAGE_PATH+"/sidebar-aws4.png"},{title:"Allied Telesis",id:"allied_telesis",image:IMAGE_PATH+"/sidebar-allied_telesis.png"},{title:mxResources.get("aws3d"),id:"aws3d",image:IMAGE_PATH+"/sidebar-aws3d.png"},{title:mxResources.get("azure"),id:"azure",image:IMAGE_PATH+"/sidebar-azure.png"},{title:"Cloud & Enterprise",id:"mscae",image:IMAGE_PATH+
 "/sidebar-mscae.png"},{title:mxResources.get("cisco"),id:"cisco",image:IMAGE_PATH+"/sidebar-cisco.png"},{title:"Cisco Safe",id:"cisco_safe",image:IMAGE_PATH+"/sidebar-cisco_safe.png"},{title:"Citrix",id:"citrix",image:IMAGE_PATH+"/sidebar-citrix.png"},{title:"Google Cloud Platform",id:"gcp2",image:IMAGE_PATH+"/sidebar-gcp2.png"},{title:"IBM",id:"ibm",image:IMAGE_PATH+"/sidebar-ibm.png"},{title:"Network",id:"network",image:IMAGE_PATH+"/sidebar-network.png"},{title:"Office",id:"office",image:IMAGE_PATH+
 "/sidebar-office.png"},{title:mxResources.get("rack"),id:"rack",image:IMAGE_PATH+"/sidebar-rack.png"},{title:"Veeam",id:"veeam",image:IMAGE_PATH+"/sidebar-veeam.png"}]},{title:mxResources.get("business"),entries:[{title:"ArchiMate 3.0",id:"archimate3",image:IMAGE_PATH+"/sidebar-archimate3.png"},{title:mxResources.get("archiMate21"),id:"archimate",image:IMAGE_PATH+"/sidebar-archimate.png"},{title:mxResources.get("bpmn"),id:"bpmn",image:IMAGE_PATH+"/sidebar-bpmn.png"},{title:mxResources.get("leanMapping"),
 id:"lean_mapping",image:IMAGE_PATH+"/sidebar-leanmapping.png"},{title:mxResources.get("sysml"),id:"sysml",image:IMAGE_PATH+"/sidebar-sysml.png"}]},{title:mxResources.get("other"),entries:[{title:mxResources.get("cabinets"),id:"cabinets",image:IMAGE_PATH+"/sidebar-cabinets.png"},{title:"Infographic",id:"infographic",image:IMAGE_PATH+"/sidebar-infographic.png"},{title:mxResources.get("eip"),id:"eip",image:IMAGE_PATH+"/sidebar-eip.png"},{title:mxResources.get("electrical"),id:"electrical",image:IMAGE_PATH+
@@ -3994,7 +3997,7 @@ this.createVertexTemplateEntry(a+"arrowNW;fillColor=#000000;aspect=fixed;",45.5,
 null,null,this.getTagsForStencil("mxgraph.aws3d","arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"flatEdge;fillColor=#000000;aspect=fixed;",63.2,36,"","Flat Edge",null,null,this.getTagsForStencil("mxgraph.aws3d","arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"flatDoubleEdge;fillColor=#000000;aspect=fixed;",252.8,144,"","Flat Double Edge",null,null,this.getTagsForStencil("mxgraph.aws3d",
 "arrow ne north east northeast","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"arrowhead;aspect=fixed;",19,11,"","Arrowhead",null,null,this.getTagsForStencil("mxgraph.aws3d","arrowhead","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"edge;aspect=fixed;",97,107.4,"","Edge",null,null,this.getTagsForStencil("mxgraph.aws3d","edge","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"reference;aspect=fixed;",29.5,19.5,"","Reference",
 null,null,this.getTagsForStencil("mxgraph.aws3d","reference","aws 3d amazon web service").join(" ")),this.createVertexTemplateEntry(a+"spot;aspect=fixed;",62,36,"","Spot",null,null,this.getTagsForStencil("mxgraph.aws3d","spot","aws 3d amazon web service").join(" ")),this.createEdgeTemplateEntry("edgeStyle=isometricEdgeStyle;endArrow=none;html=1;",50,100,"isometric edge","Isometric Edge 1"),this.createEdgeTemplateEntry("edgeStyle=isometricEdgeStyle;endArrow=none;html=1;elbow=vertical;",50,100,"isometric edge",
-"Isometric Edge 2")])}})();(function(){Sidebar.prototype.addAWS4Palette=function(){var a="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",e="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+
+"Isometric Edge 2")])}})();(function(){Sidebar.prototype.addAWS4Palette=function(){var a="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;strokeColor=#ffffff;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",e="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+
 mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",d="outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;"+mxConstants.STYLE_SHAPE+"=mxgraph.aws4.",b="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;"+
 mxConstants.STYLE_SHAPE+"=mxgraph.aws4.";this.addAWS4ArrowsPalette("mxgraph.aws4",this);this.addAWS4GeneralResourcesPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4IllustrationsPalette(d,"mxgraph.aws4",this);this.addAWS4GroupsLightPalette(b,"mxgraph.aws4",this);this.addAWS4GroupsDarkPalette(b,"mxgraph.aws4",this);this.addAWS4AnalyticsPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ApplicationIntegrationPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ARVRPalette(80,100,60,a,e,
 "mxgraph.aws4",this);this.addAWS4CostManagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4BusinessProductivityPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4ComputePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4CustomerEngagementPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DatabasePalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DesktopAppStreamingPalette(80,100,60,a,e,"mxgraph.aws4",this);this.addAWS4DeveloperToolsPalette(80,100,60,a,e,"mxgraph.aws4",this);
@@ -4029,109 +4032,112 @@ this.createVertexTemplateEntry(a+"group;grIcon="+e+".group_spot_fleet;strokeColo
 130,130,"Elastic Load Balancing","Elastic Load Balancing",null,null,this.getTagsForStencil(e,"elastic load balancing","aws group amazon web service groups group dark").join(" ")),this.createVertexTemplateEntry("outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;strokeColor=#858B94;fillColor=none;verticalAlign=top;align=center;fontColor=#858B94;dashed=1;spacingTop=3;",130,130,"Generic Group","Generic Group",null,null,this.getTagsForStencil(e,"generic","aws group amazon web service groups group dark").join(" ")),
 this.createVertexTemplateEntry("outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;strokeColor=#FF9900;fillColor=none;verticalAlign=top;align=center;fontColor=#FF9900;dashed=0;spacingTop=3;",130,130,"Highlight","Highlight",null,null,this.getTagsForStencil(e,"highlight","aws group amazon web service groups group dark").join(" ")),this.createVertexTemplateEntry(a+"group;grIcon="+e+".group_aws_step_functions_workflow;strokeColor=#E8E8E8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#E8E8E8;dashed=0;",
 130,130,"AWS Step Functions workflow","AWS Step Functions workflow",null,null,this.getTagsForStencil(e,"step functions workflow","aws group amazon web service groups group dark").join(" ")),this.createVertexTemplateEntry(a+"group;grIcon="+e+".group_spot_fleet;strokeColor=#FFFFFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#FFFFFF;dashed=0;",130,130,"Spot Fleet","Spot Fleet",null,null,this.getTagsForStencil(e,"spot fleet","aws group amazon web service groups group dark").join(" "))])};
-Sidebar.prototype.addAWS4AnalyticsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Analytics","AWS / Analytics",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".athena;",a,e+10,"Amazon Athena",null,null,null,this.getTagsForStencil(f,"athena","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudsearch;",a,e+10,"Amazon CloudSearch",null,null,null,this.getTagsForStencil(f,"cloudsearch cloud search","aws amazon web service analytics").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".emr;",a,e,"Amazon EMR",null,null,null,this.getTagsForStencil(f,"emr","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticsearch_service;",a,e+20,"Amazon Elasticsearch Service",null,null,null,this.getTagsForStencil(f,"elasticsearch elastic search service","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis;",a,e+10,"Amazon Kinesis",
-null,null,null,this.getTagsForStencil(f,"kinesis","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_analytics;",a,e+20,"Amazon Kinesis Data Analytics",null,null,null,this.getTagsForStencil(f,"kinesis data analytics","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_firehose;",a,e+20,"Amazon Kinesis Data Firehose",null,null,null,this.getTagsForStencil(f,"kinesis data firehose",
-"aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_streams;",a,e+20,"Amazon Kinesis Data Streams",null,null,null,this.getTagsForStencil(f,"kinesis data streams","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_video_streams;",a,e+20,"Amazon Kinesis Video Streams",null,null,null,this.getTagsForStencil(f,"kinesis video streams","aws amazon web service analytics").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".redshift;",a,e+10,"Amazon Redshift",null,null,null,this.getTagsForStencil(f,"redshift","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".quicksight;",a,e+10,"Amazon QuickSight",null,null,null,this.getTagsForStencil(f,"quicksight quick sight","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".data_pipeline;",a,e+10,"AWS Data Pipeline",
-null,null,null,this.getTagsForStencil(f,"data pipeline","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".glue;",a,e,"AWS Glue",null,null,null,this.getTagsForStencil(f,"glue","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".search_documents;",d,d,"Search\ndocuments",null,null,null,this.getTagsForStencil(f,"search documents","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".cluster;",d,d,"Cluster",null,null,null,this.getTagsForStencil(f,"cluster","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hdfs_cluster;",d,d,"HDFS cluster",null,null,null,this.getTagsForStencil(f,"hdfs cluster","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine;",d,d,"EMR engine",null,null,null,this.getTagsForStencil(f,"emr engine","aws amazon web service analytics").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m3;",d,d,"EMR engine\nMapR M3",null,null,null,this.getTagsForStencil(f,"emr engine mapr m3","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m5;",d,d,"EMR engine\nMapR M5",null,null,null,this.getTagsForStencil(f,"emr engine mapr m5","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m7;",
-d,d,"EMR engine\nMapR M7",null,null,null,this.getTagsForStencil(f,"emr engine mapr m7","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_compute_node;",d,d,"Dense\ncompute Node",null,null,null,this.getTagsForStencil(f,"dense compute node","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_storage_node;",d,d,"Dense\nstorage Node",null,null,null,this.getTagsForStencil(f,"dense storage node",
-"aws amazon web service analytics").join(" "))])};Sidebar.prototype.addAWS4ApplicationIntegrationPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Application Integration","AWS / Application Integration",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".step_functions;",a,e+10,"AWS Step Functions",null,null,null,this.getTagsForStencil(f,"step functions","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".mq;",
-a,e,"Amazon MQ",null,null,null,this.getTagsForStencil(f,"mq","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sns;",a,e,"Amazon SNS",null,null,null,this.getTagsForStencil(f,"sns","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sqs;",a,e,"Amazon SQS",null,null,null,this.getTagsForStencil(f,"sqs","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".appsync;",a,e,"AWS AppSync",null,null,null,this.getTagsForStencil(f,"appsync","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".email_notification;",d,d,"Email\nnotification",null,null,null,this.getTagsForStencil(f,"email notification","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http_notification;",d,d,"HTTP\nnotification",
-null,null,null,this.getTagsForStencil(f,"http notification","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".topic;",d,d,"Topic",null,null,null,this.getTagsForStencil(f,"topic","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".message;",d,d,"Message",null,null,null,this.getTagsForStencil(f,"message","aws amazon web service application integration").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".queue;",d,d,"Queue",null,null,null,this.getTagsForStencil(f,"queue","aws amazon web service application integration").join(" "))])};Sidebar.prototype.addAWS4ARVRPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4AR VR","AWS / AR & VR",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sumerian;",a,e+10,"Amazon Sumerian",null,null,null,this.getTagsForStencil(f,"sumerian","aws amazon web service ar vr augmented virtual reality").join(" "))])};
-Sidebar.prototype.addAWS4CostManagementPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Cost Management","AWS / Cost Management",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cost_explorer;",a,e+10,"AWS Cost Explorer",null,null,null,this.getTagsForStencil(f,"cost explorer","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".budgets;",a,e,"AWS Budgets",null,null,null,this.getTagsForStencil(f,"budgets","aws amazon web service cost management").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cost_and_usage_report;",a,e+10,"AWS Cost and Usage Report",null,null,null,this.getTagsForStencil(f,"cost usage report","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".reserved_instance_reporting;",a,e+20,"Reserved Instance Reporting",null,null,null,this.getTagsForStencil(f,"reserved instance reporting","aws amazon web service cost management").join(" "))])};Sidebar.prototype.addAWS4BusinessProductivityPalette=
-function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Business Productivity","AWS / Business Productivity",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".alexa_for_business;",a,e+10,"Alexa for Business",null,null,null,this.getTagsForStencil(f,"alexa for business","aws amazon web service business productivity").join(" "))])};Sidebar.prototype.addAWS4ComputePalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Compute","AWS / Compute",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".ec2;",a,e,"Amazon EC2",null,null,null,this.getTagsForStencil(f,"ec2","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ecr;",a,e,"Amazon ECR",null,null,null,this.getTagsForStencil(f,"ecr","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ecs;",a,e,"Amazon ECS",null,null,null,this.getTagsForStencil(f,"ecs","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".eks;",a,e,"Amazon EKS",null,null,null,this.getTagsForStencil(f,"eks","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lightsail;",a,e+10,"Amazon Lightsail",null,null,null,this.getTagsForStencil(f,"lightsail","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".batch;",a,e,"AWS Batch",null,null,null,this.getTagsForStencil(f,"batch","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".elastic_beanstalk;",a,e+10,"AWS Elastic Beanstalk",null,null,null,this.getTagsForStencil(f,"elastic beanstalk","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".fargate;",a,e,"AWS Fargate",null,null,null,this.getTagsForStencil(f,"fargate","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lambda;",a,e,"AWS Lambda",null,null,null,this.getTagsForStencil(f,"lambda","aws amazon web service compute").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".serverless_application_repository;",a,e+35,"AWS Serverless Application Repository",null,null,null,this.getTagsForStencil(f,"serverless application repository","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_load_balancing;",a,e+10,"Elastic Load Balancing",null,null,null,this.getTagsForStencil(f,"elastic load balancing","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".application_load_balancer;",a,e+10,"Application Load Balancer",null,null,null,this.getTagsForStencil(f,"application load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".classic_load_balancer;",a,e+10,"Classic Load Balancer",null,null,null,this.getTagsForStencil(f,"classic load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".network_load_balancer;",
-a,e+10,"Network Load Balancer",null,null,null,this.getTagsForStencil(f,"network load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".vmware_cloud_on_aws;",a,e+10,"VMware Cloud on AWS",null,null,null,this.getTagsForStencil(f,"vmware cloud on","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ami;",d,d,"AMI",null,null,null,this.getTagsForStencil(f,"ami","aws amazon web service compute").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".auto_scaling;",d,d,"Auto Scaling",null,null,null,this.getTagsForStencil(f,"auto scaling","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_on_instance;",d,d,"DB on\nInstance",null,null,null,this.getTagsForStencil(f,"db on instance database","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".elastic_ip_address;",d,d,"Elastic IP\nAddress",
-null,null,null,this.getTagsForStencil(f,"elastic ip address internet protocol","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instance_with_cloudwatch;",d,d,"Instance with\nCloudWatch",null,null,null,this.getTagsForStencil(f,"instance with cloudwatch","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instance;",d,d,"Instance",null,null,null,this.getTagsForStencil(f,"instance","aws amazon web service compute").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instances;",d,d,"Instances",null,null,null,this.getTagsForStencil(f,"instances","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".optimized_instance;",d,d,"Optimized\nInstance",null,null,null,this.getTagsForStencil(f,"optimized_instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".rescue;",d,d,"Rescue",null,null,null,this.getTagsForStencil(f,
-"rescue","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".spot_instance;",d,d,"Spot Instance",null,null,null,this.getTagsForStencil(f,"spot instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".x1_instance;",d,d,"X1 Instance",null,null,null,this.getTagsForStencil(f,"x1 instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".registry;",d,d,"Registry",null,null,null,this.getTagsForStencil(f,"registry","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_1;",d,d,"Container 1",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_2;",d,d,"Container 2",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_3;",d,d,"Container 3",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".application;",d,d,"Application",null,null,null,this.getTagsForStencil(f,"application","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".deployment;",d,d,"Deployment",null,null,null,this.getTagsForStencil(f,
-"deployment","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lambda_function;",d,d,"Lambda\nFunction",null,null,null,this.getTagsForStencil(f,"lambda function","aws amazon web service compute").join(" "))])};Sidebar.prototype.addAWS4CustomerEngagementPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Customer Engagement","AWS / Customer Engagement",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".connect;",a,e+10,"Amazon Connect",
-null,null,null,this.getTagsForStencil(f,"connect","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".pinpoint;",a,e+10,"Amazon Pinpoint",null,null,null,this.getTagsForStencil(f,"pinpoint","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".simple_email_service;",a,e+10,"Amazon Simple Email Service",null,null,null,this.getTagsForStencil(f,"simple email service","aws amazon web service customer engagement").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".email;",d,d,"Email",null,null,null,this.getTagsForStencil(f,"email","aws amazon web service customer engagement").join(" "))])};Sidebar.prototype.addAWS4DatabasePalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Database","AWS / Database",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".aurora;",a,e+10,"Amazon\nAurora",null,null,null,this.getTagsForStencil(f,"aurora","aws amazon web service db database").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".dynamodb;",a,e+10,"Amazon DynamoDB",null,null,null,this.getTagsForStencil(f,"dynamodb","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache;",a,e+10,"Amazon ElastiCache",null,null,null,this.getTagsForStencil(f,"elasticache","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache_for_memcached;",a,e+20,"Amazon ElastiCache for Memcached",
-null,null,null,this.getTagsForStencil(f,"elasticache for memcached","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache_for_redis;",a,e+20,"Amazon ElastiCache for Redis",null,null,null,this.getTagsForStencil(f,"elasticache for redis","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".neptune;",a,e+10,"Amazon Neptune",null,null,null,this.getTagsForStencil(f,"neptune","aws amazon web service db database").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rds;",a,e,"Amazon RDS",null,null,null,this.getTagsForStencil(f,"rds","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".redshift;",a,e+10,"Amazon Redshift",null,null,null,this.getTagsForStencil(f,"redshift","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".database_migration_service;",a,e+20,"AWS Database Migration Service",null,
-null,null,this.getTagsForStencil(f,"db database migration service","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".attribute;",d,d,"Attribute",null,null,null,this.getTagsForStencil(f,"attribute","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".attributes;",d,d,"Attributes",null,null,null,this.getTagsForStencil(f,"attributes","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".item;",d,d,"Item",null,null,null,this.getTagsForStencil(f,"item","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".items;",d,d,"Items",null,null,null,this.getTagsForStencil(f,"items","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".global_secondary_index;",d,d,"Global\nsecondary\nindex",null,null,null,this.getTagsForStencil(f,"global secondary index",
-"aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".table;",d,d,"Table",null,null,null,this.getTagsForStencil(f,"table","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cache_node;",d,d,"Cache node",null,null,null,this.getTagsForStencil(f,"cache node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance;",d,d,"DB instance",
-null,null,null,this.getTagsForStencil(f,"db instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance_standby;",d,d,"DB instance\nstandby",null,null,null,this.getTagsForStencil(f,"db instance standby","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance_read_replica;",d,d,"DB instance\nread replica",null,null,null,this.getTagsForStencil(f,"db instance read replica",
-"aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".piop;",d,d,"PIOP",null,null,null,this.getTagsForStencil(f,"piop","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ms_sql_instance;",d,d,"MS SQL\ninstance",null,null,null,this.getTagsForStencil(f,"ms sql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ms_sql_instance_alternate;",
-d,d,"MS SQL\ninstance\nalternate",null,null,null,this.getTagsForStencil(f,"ms sql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mysql_db_instance;",d,d,"MySQL DB \ninstance",null,null,null,this.getTagsForStencil(f,"mysql db database instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mysql_db_instance_alternate;",d,d,"MySQL DB \ninstance\nalternate",null,null,
-null,this.getTagsForStencil(f,"mysql db database instance alternate","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".oracle_db_instance;",d,d,"Oracle DB \ninstance",null,null,null,this.getTagsForStencil(f,"oracle db database instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".oracle_db_instance_alternate;",d,d,"Oracle DB \ninstance\nalternate",null,null,null,this.getTagsForStencil(f,
-"oracle db database instance alternate","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sql_primary;",d,d,"SQL primary",null,null,null,this.getTagsForStencil(f,"sql primary","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sql_replica;",d,d,"SQL replica",null,null,null,this.getTagsForStencil(f,"sql replica","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".postgresql_instance;",d,d,"PostgreSQL\ninstance",null,null,null,this.getTagsForStencil(f,"postresql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_compute_node;",d,d,"Dense\ncompute node",null,null,null,this.getTagsForStencil(f,"dense compute node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_storage_node;",d,d,"Dense\nstorage node",
-null,null,null,this.getTagsForStencil(f,"dense storage node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".database_migration_workflow_job;",d,d,"Database\nmigration\nworkflow/job",null,null,null,this.getTagsForStencil(f,"database migration workflow job","aws amazon web service db database").join(" "))])};Sidebar.prototype.addAWS4DesktopAppStreamingPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Desktop App Streaming","AWS / Desktop & App Streaming",
-!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".appstream_20;",a,e+10,"Amazon AppStream 2.0",null,null,null,this.getTagsForStencil(f,"appstream","aws amazon web service db database").join(" "))])};Sidebar.prototype.addAWS4DeveloperToolsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Developer Tools","AWS / Developer Tools",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codestar;",a,e,"AWS CodeStar",null,null,null,this.getTagsForStencil(f,"codestar","aws amazon web service dev developer tools").join(" ")),
+Sidebar.prototype.addAWS4AnalyticsPalette=function(a,e,d,b,c,f,g){b="gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;"+b;c="strokeColor=#5A30B5;"+c;this.addPaletteFunctions("aws4Analytics","AWS / Analytics",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".athena;",a,e+10,"Amazon Athena",null,null,null,this.getTagsForStencil(f,"athena","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudsearch;",a,e+10,"Amazon CloudSearch",
+null,null,null,this.getTagsForStencil(f,"cloudsearch cloud search","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".emr;",a,e,"Amazon EMR",null,null,null,this.getTagsForStencil(f,"emr","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticsearch_service;",a,e+20,"Amazon Elasticsearch Service",null,null,null,this.getTagsForStencil(f,"elasticsearch elastic search service","aws amazon web service analytics").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis;",a,e+10,"Amazon Kinesis",null,null,null,this.getTagsForStencil(f,"kinesis","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_analytics;",a,e+20,"Amazon Kinesis Data Analytics",null,null,null,this.getTagsForStencil(f,"kinesis data analytics","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_firehose;",
+a,e+20,"Amazon Kinesis Data Firehose",null,null,null,this.getTagsForStencil(f,"kinesis data firehose","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_data_streams;",a,e+20,"Amazon Kinesis Data Streams",null,null,null,this.getTagsForStencil(f,"kinesis data streams","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_video_streams;",a,e+20,"Amazon Kinesis Video Streams",null,
+null,null,this.getTagsForStencil(f,"kinesis video streams","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".redshift;",a,e+10,"Amazon Redshift",null,null,null,this.getTagsForStencil(f,"redshift","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".quicksight;",a,e+10,"Amazon QuickSight",null,null,null,this.getTagsForStencil(f,"quicksight quick sight","aws amazon web service analytics").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".data_pipeline;",a,e+10,"AWS Data Pipeline",null,null,null,this.getTagsForStencil(f,"data pipeline","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".glue;",a,e,"AWS Glue",null,null,null,this.getTagsForStencil(f,"glue","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".search_documents;",d,d,"Search\ndocuments",null,null,null,this.getTagsForStencil(f,
+"search documents","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cluster;",d,d,"Cluster",null,null,null,this.getTagsForStencil(f,"cluster","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hdfs_cluster;",d,d,"HDFS cluster",null,null,null,this.getTagsForStencil(f,"hdfs cluster","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".emr_engine;",d,d,"EMR engine",null,null,null,this.getTagsForStencil(f,"emr engine","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m3;",d,d,"EMR engine\nMapR M3",null,null,null,this.getTagsForStencil(f,"emr engine mapr m3","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m5;",d,d,"EMR engine\nMapR M5",null,null,null,this.getTagsForStencil(f,"emr engine mapr m5",
+"aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".emr_engine_mapr_m7;",d,d,"EMR engine\nMapR M7",null,null,null,this.getTagsForStencil(f,"emr engine mapr m7","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_compute_node;",d,d,"Dense\ncompute Node",null,null,null,this.getTagsForStencil(f,"dense compute node","aws amazon web service analytics").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".dense_storage_node;",d,d,"Dense\nstorage Node",null,null,null,this.getTagsForStencil(f,"dense storage node","aws amazon web service analytics").join(" "))])};Sidebar.prototype.addAWS4ApplicationIntegrationPalette=function(a,e,d,b,c,f,g){b="gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;"+b;c="strokeColor=#BC1356;"+c;this.addPaletteFunctions("aws4Application Integration","AWS / Application Integration",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".step_functions;",a,e+10,"AWS Step Functions",null,null,null,this.getTagsForStencil(f,"step functions","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".mq;",a,e,"Amazon MQ",null,null,null,this.getTagsForStencil(f,"mq","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sns;",a,e,"Amazon SNS",null,null,null,this.getTagsForStencil(f,"sns","aws amazon web service application integration").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sqs;",a,e,"Amazon SQS",null,null,null,this.getTagsForStencil(f,"sqs","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".appsync;",a,e,"AWS AppSync",null,null,null,this.getTagsForStencil(f,"appsync","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".email_notification;",d,d,"Email\nnotification",null,null,
+null,this.getTagsForStencil(f,"email notification","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http_notification;",d,d,"HTTP\nnotification",null,null,null,this.getTagsForStencil(f,"http notification","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".topic;",d,d,"Topic",null,null,null,this.getTagsForStencil(f,"topic","aws amazon web service application integration").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".message;",d,d,"Message",null,null,null,this.getTagsForStencil(f,"message","aws amazon web service application integration").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".queue;",d,d,"Queue",null,null,null,this.getTagsForStencil(f,"queue","aws amazon web service application integration").join(" "))])};Sidebar.prototype.addAWS4ARVRPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4AR VR","AWS / AR & VR",
+!1,[this.createVertexTemplateEntry("gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;"+b+"productIcon;prIcon="+f+".sumerian;",a,e+10,"Amazon Sumerian",null,null,null,this.getTagsForStencil(f,"sumerian","aws amazon web service ar vr augmented virtual reality").join(" "))])};Sidebar.prototype.addAWS4CostManagementPalette=function(a,e,d,b,c,f,g){b="gradientColor=#60A337;gradientDirection=north;fillColor=#277116;"+b;this.addPaletteFunctions("aws4Cost Management","AWS / Cost Management",
+!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cost_explorer;",a,e+10,"AWS Cost Explorer",null,null,null,this.getTagsForStencil(f,"cost explorer","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".budgets;",a,e,"AWS Budgets",null,null,null,this.getTagsForStencil(f,"budgets","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cost_and_usage_report;",a,e+10,"AWS Cost and Usage Report",
+null,null,null,this.getTagsForStencil(f,"cost usage report","aws amazon web service cost management").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".reserved_instance_reporting;",a,e+20,"Reserved Instance Reporting",null,null,null,this.getTagsForStencil(f,"reserved instance reporting","aws amazon web service cost management").join(" "))])};Sidebar.prototype.addAWS4BusinessProductivityPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Business Productivity","AWS / Business Productivity",
+!1,[this.createVertexTemplateEntry("gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;"+b+"productIcon;prIcon="+f+".alexa_for_business;",a,e+10,"Alexa for Business",null,null,null,this.getTagsForStencil(f,"alexa for business","aws amazon web service business productivity").join(" "))])};Sidebar.prototype.addAWS4ComputePalette=function(a,e,d,b,c,f,g){b="gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;"+b;c="strokeColor=#D05C17;"+c;this.addPaletteFunctions("aws4Compute",
+"AWS / Compute",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ec2;",a,e,"Amazon EC2",null,null,null,this.getTagsForStencil(f,"ec2","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ecr;",a,e,"Amazon ECR",null,null,null,this.getTagsForStencil(f,"ecr","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".ecs;",a,e,"Amazon ECS",null,null,null,this.getTagsForStencil(f,"ecs","aws amazon web service compute").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".eks;",a,e,"Amazon EKS",null,null,null,this.getTagsForStencil(f,"eks","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lightsail;",a,e+10,"Amazon Lightsail",null,null,null,this.getTagsForStencil(f,"lightsail","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".batch;",a,e,"AWS Batch",null,null,null,this.getTagsForStencil(f,"batch","aws amazon web service compute").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_beanstalk;",a,e+10,"AWS Elastic Beanstalk",null,null,null,this.getTagsForStencil(f,"elastic beanstalk","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".fargate;",a,e,"AWS Fargate",null,null,null,this.getTagsForStencil(f,"fargate","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lambda;",a,e,"AWS Lambda",null,null,null,this.getTagsForStencil(f,
+"lambda","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".serverless_application_repository;",a,e+35,"AWS Serverless Application Repository",null,null,null,this.getTagsForStencil(f,"serverless application repository","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_load_balancing;",a,e+10,"Elastic Load Balancing",null,null,null,this.getTagsForStencil(f,"elastic load balancing","aws amazon web service compute").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".application_load_balancer;",a,e+10,"Application Load Balancer",null,null,null,this.getTagsForStencil(f,"application load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".classic_load_balancer;",a,e+10,"Classic Load Balancer",null,null,null,this.getTagsForStencil(f,"classic load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".network_load_balancer;",a,e+10,"Network Load Balancer",null,null,null,this.getTagsForStencil(f,"network load balancer","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".vmware_cloud_on_aws;",a,e+10,"VMware Cloud on AWS",null,null,null,this.getTagsForStencil(f,"vmware cloud on","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ami;",d,d,"AMI",null,null,null,this.getTagsForStencil(f,"ami",
+"aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".auto_scaling;",d,d,"Auto Scaling",null,null,null,this.getTagsForStencil(f,"auto scaling","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_on_instance;",d,d,"DB on\nInstance",null,null,null,this.getTagsForStencil(f,"db on instance database","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".elastic_ip_address;",d,d,"Elastic IP\nAddress",null,null,null,this.getTagsForStencil(f,"elastic ip address internet protocol","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instance_with_cloudwatch;",d,d,"Instance with\nCloudWatch",null,null,null,this.getTagsForStencil(f,"instance with cloudwatch","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instance;",d,d,"Instance",null,null,
+null,this.getTagsForStencil(f,"instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instances;",d,d,"Instances",null,null,null,this.getTagsForStencil(f,"instances","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".optimized_instance;",d,d,"Optimized\nInstance",null,null,null,this.getTagsForStencil(f,"optimized_instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".rescue;",d,d,"Rescue",null,null,null,this.getTagsForStencil(f,"rescue","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".spot_instance;",d,d,"Spot Instance",null,null,null,this.getTagsForStencil(f,"spot instance","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".x1_instance;",d,d,"X1 Instance",null,null,null,this.getTagsForStencil(f,"x1 instance","aws amazon web service compute").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".registry;",d,d,"Registry",null,null,null,this.getTagsForStencil(f,"registry","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_1;",d,d,"Container 1",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_2;",d,d,"Container 2",null,null,null,this.getTagsForStencil(f,
+"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".container_3;",d,d,"Container 3",null,null,null,this.getTagsForStencil(f,"container","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".application;",d,d,"Application",null,null,null,this.getTagsForStencil(f,"application","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".deployment;",
+d,d,"Deployment",null,null,null,this.getTagsForStencil(f,"deployment","aws amazon web service compute").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lambda_function;",d,d,"Lambda\nFunction",null,null,null,this.getTagsForStencil(f,"lambda function","aws amazon web service compute").join(" "))])};Sidebar.prototype.addAWS4CustomerEngagementPalette=function(a,e,d,b,c,f,g){b="gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;"+b;c="strokeColor=#3334B9;"+c;this.addPaletteFunctions("aws4Customer Engagement",
+"AWS / Customer Engagement",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".connect;",a,e+10,"Amazon Connect",null,null,null,this.getTagsForStencil(f,"connect","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".pinpoint;",a,e+10,"Amazon Pinpoint",null,null,null,this.getTagsForStencil(f,"pinpoint","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".simple_email_service;",
+a,e+10,"Amazon Simple Email Service",null,null,null,this.getTagsForStencil(f,"simple email service","aws amazon web service customer engagement").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".email;",d,d,"Email",null,null,null,this.getTagsForStencil(f,"email","aws amazon web service customer engagement").join(" "))])};Sidebar.prototype.addAWS4DatabasePalette=function(a,e,d,b,c,f,g){b="gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;"+b;c="strokeColor=#3334B9;"+
+c;this.addPaletteFunctions("aws4Database","AWS / Database",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".aurora;",a,e+10,"Amazon\nAurora",null,null,null,this.getTagsForStencil(f,"aurora","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".dynamodb;",a,e+10,"Amazon DynamoDB",null,null,null,this.getTagsForStencil(f,"dynamodb","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".elasticache;",a,e+10,"Amazon ElastiCache",null,null,null,this.getTagsForStencil(f,"elasticache","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache_for_memcached;",a,e+20,"Amazon ElastiCache for Memcached",null,null,null,this.getTagsForStencil(f,"elasticache for memcached","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elasticache_for_redis;",a,e+20,"Amazon ElastiCache for Redis",
+null,null,null,this.getTagsForStencil(f,"elasticache for redis","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".neptune;",a,e+10,"Amazon Neptune",null,null,null,this.getTagsForStencil(f,"neptune","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rds;",a,e,"Amazon RDS",null,null,null,this.getTagsForStencil(f,"rds","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".redshift;",a,e+10,"Amazon Redshift",null,null,null,this.getTagsForStencil(f,"redshift","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".database_migration_service;",a,e+20,"AWS Database Migration Service",null,null,null,this.getTagsForStencil(f,"db database migration service","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".attribute;",d,d,"Attribute",null,
+null,null,this.getTagsForStencil(f,"attribute","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".attributes;",d,d,"Attributes",null,null,null,this.getTagsForStencil(f,"attributes","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".item;",d,d,"Item",null,null,null,this.getTagsForStencil(f,"item","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".items;",d,d,"Items",null,null,null,this.getTagsForStencil(f,"items","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".global_secondary_index;",d,d,"Global\nsecondary\nindex",null,null,null,this.getTagsForStencil(f,"global secondary index","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".table;",d,d,"Table",null,null,null,this.getTagsForStencil(f,"table","aws amazon web service db database").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cache_node;",d,d,"Cache node",null,null,null,this.getTagsForStencil(f,"cache node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance;",d,d,"DB instance",null,null,null,this.getTagsForStencil(f,"db instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance_standby;",d,d,"DB instance\nstandby",null,
+null,null,this.getTagsForStencil(f,"db instance standby","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".db_instance_read_replica;",d,d,"DB instance\nread replica",null,null,null,this.getTagsForStencil(f,"db instance read replica","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".piop;",d,d,"PIOP",null,null,null,this.getTagsForStencil(f,"piop","aws amazon web service db database").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ms_sql_instance;",d,d,"MS SQL\ninstance",null,null,null,this.getTagsForStencil(f,"ms sql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".ms_sql_instance_alternate;",d,d,"MS SQL\ninstance\nalternate",null,null,null,this.getTagsForStencil(f,"ms sql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mysql_db_instance;",
+d,d,"MySQL DB \ninstance",null,null,null,this.getTagsForStencil(f,"mysql db database instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mysql_db_instance_alternate;",d,d,"MySQL DB \ninstance\nalternate",null,null,null,this.getTagsForStencil(f,"mysql db database instance alternate","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".oracle_db_instance;",d,d,"Oracle DB \ninstance",
+null,null,null,this.getTagsForStencil(f,"oracle db database instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".oracle_db_instance_alternate;",d,d,"Oracle DB \ninstance\nalternate",null,null,null,this.getTagsForStencil(f,"oracle db database instance alternate","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sql_primary;",d,d,"SQL primary",null,null,null,this.getTagsForStencil(f,
+"sql primary","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sql_replica;",d,d,"SQL replica",null,null,null,this.getTagsForStencil(f,"sql replica","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".postgresql_instance;",d,d,"PostgreSQL\ninstance",null,null,null,this.getTagsForStencil(f,"postresql instance","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".dense_compute_node;",d,d,"Dense\ncompute node",null,null,null,this.getTagsForStencil(f,"dense compute node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".dense_storage_node;",d,d,"Dense\nstorage node",null,null,null,this.getTagsForStencil(f,"dense storage node","aws amazon web service db database").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".database_migration_workflow_job;",d,d,
+"Database\nmigration\nworkflow/job",null,null,null,this.getTagsForStencil(f,"database migration workflow job","aws amazon web service db database").join(" "))])};Sidebar.prototype.addAWS4DesktopAppStreamingPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Desktop App Streaming","AWS / Desktop & App Streaming",!1,[this.createVertexTemplateEntry("gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;"+b+"productIcon;prIcon="+f+".appstream_20;",a,e+10,"Amazon AppStream 2.0",null,
+null,null,this.getTagsForStencil(f,"appstream","aws amazon web service db database").join(" "))])};Sidebar.prototype.addAWS4DeveloperToolsPalette=function(a,e,d,b,c,f,g){b="gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;"+b;this.addPaletteFunctions("aws4Developer Tools","AWS / Developer Tools",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codestar;",a,e,"AWS CodeStar",null,null,null,this.getTagsForStencil(f,"codestar","aws amazon web service dev developer tools").join(" ")),
 this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloud9;",a,e,"AWS Cloud9",null,null,null,this.getTagsForStencil(f,"cloud9","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codebuild;",a,e+10,"AWS CodeBuild",null,null,null,this.getTagsForStencil(f,"codebuild","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codecommit;",a,e+10,"AWS CodeCommit",null,null,null,
 this.getTagsForStencil(f,"codecommit","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codedeploy;",a,e+10,"AWS CodeDeploy",null,null,null,this.getTagsForStencil(f,"codedeploy","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".codepipeline;",a,e+10,"AWS CodePipeline",null,null,null,this.getTagsForStencil(f,"codepipeline","aws amazon web service dev developer tools").join(" ")),
 this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".command_line_interface;",a,e+20,"AWS\nCommand Line Interface",null,null,null,this.getTagsForStencil(f,"command line interface","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".tools_and_sdks;",a,e+10,"AWS Tools and SDKs",null,null,null,this.getTagsForStencil(f,"tools and sdks software development kit","aws amazon web service dev developer tools").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".xray;",a,e,"AWS X-Ray",null,null,null,this.getTagsForStencil(f,"ray xray","aws amazon web service dev developer tools").join(" "))])};Sidebar.prototype.addAWS4GameDevelopmentPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Game Development","AWS / Game Development",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".gamelift;",a,e+10,"Amazon GameLift",null,null,null,this.getTagsForStencil(f,"gamelift","aws amazon web service game development").join(" "))])};
-Sidebar.prototype.addAWS4InternetOfThingsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Internet of Things","AWS / Internet of Things",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_core;",a,e+10,"Amazon IoT Core",null,null,null,this.getTagsForStencil(f,"core","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".freertos;",a,e+10,"Amazon FreeRTOS",null,null,null,this.getTagsForStencil(f,"freertos free rtos",
-"aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".greengrass;",a,e+10,"AWS Greengrass",null,null,null,this.getTagsForStencil(f,"greengrass","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_1click;",a,e+10,"AWS IoT\n1-Click",null,null,null,this.getTagsForStencil(f,"1click one click","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".iot_analytics;",a,e+10,"AWS IoT Analytics",null,null,null,this.getTagsForStencil(f,"analytics","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_button;",a,e+10,"AWS IoT Button",null,null,null,this.getTagsForStencil(f,"button","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_device_defender;",a,e+20,"AWS IoT Device Defender",null,
-null,null,this.getTagsForStencil(f,"device defender","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_device_management;",a,e+20,"AWS IoT Device Management",null,null,null,this.getTagsForStencil(f,"device management","aws amazon web service internet of things iot").join(" "))])};Sidebar.prototype.addAWS4IOTThingsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4IoT Things","AWS / IoT Things",!1,[this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".bank;",d,d,"Bank",null,null,null,this.getTagsForStencil(f,"bank","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bycicle;",d,d,"Bycicle",null,null,null,this.getTagsForStencil(f,"bycicle","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".camera;",d,d,"Camera",null,null,null,this.getTagsForStencil(f,"camera","aws amazon web service internet of things iot").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".car;",d,d,"Car",null,null,null,this.getTagsForStencil(f,"car","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cart;",d,d,"Cart",null,null,null,this.getTagsForStencil(f,"cart","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".coffee_pot;",d,d,"Coffee Pot",null,null,null,this.getTagsForStencil(f,"coffee pot",
-"aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".door_lock;",d,d,"Door Lock",null,null,null,this.getTagsForStencil(f,"door lock","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".factory;",d,d,"Factory",null,null,null,this.getTagsForStencil(f,"factory","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".generic;",d,d,"Generic",null,null,null,this.getTagsForStencil(f,"generic","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".house;",d,d,"House",null,null,null,this.getTagsForStencil(f,"house","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lightbulb;",d,d,"Lightbulb",null,null,null,this.getTagsForStencil(f,"lightbulb","aws amazon web service internet of things iot").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".medical_emergency;",d,d,"Medical\nEmergency",null,null,null,this.getTagsForStencil(f,"medical emergency","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".police_emergency;",d,d,"Police\nEmergency",null,null,null,this.getTagsForStencil(f,"police emergency","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".thermostat;",d,d,"Thermostat",null,null,null,this.getTagsForStencil(f,"thermostat","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".travel;",d,d,"Travel",null,null,null,this.getTagsForStencil(f,"travel","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".utility;",d,d,"Utility",null,null,null,this.getTagsForStencil(f,"utility","aws amazon web service internet of things iot").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".windfarm;",d,d,"Windfarm",null,null,null,this.getTagsForStencil(f,"windfarm","aws amazon web service internet of things iot").join(" "))])};Sidebar.prototype.addAWS4IOTResourcesPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4IoT Resources","AWS / IoT Resources",!1,[this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".action;",d,d,"Action",null,null,null,this.getTagsForStencil(f,"action","aws amazon web service internet of things iot resources").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".actuator;",d,d,"Actuator",null,null,null,this.getTagsForStencil(f,"actuator","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_enabled_device;",d,d,"Alexa enabled\ndevice",null,null,null,this.getTagsForStencil(f,"alexa enabled device","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".alexa_skill;",d,d,"Alexa skill",null,null,null,this.getTagsForStencil(f,"alexa skill","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_smart_home_skill;",d,d,"Alexa smart\nhome skill",null,null,null,this.getTagsForStencil(f,"alexa smart home skill","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_voice_service;",d,d,"Alexa voice\nservice",
-null,null,null,this.getTagsForStencil(f,"alexa voice service","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".certificate_manager;",d,d,"Certificate\nmanager",null,null,null,this.getTagsForStencil(f,"certificate manager","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".desired_state;",d,d,"Desired state",null,null,null,this.getTagsForStencil(f,
-"desired state","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".echo;",d,d,"Echo",null,null,null,this.getTagsForStencil(f,"echo","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".firetv_stick;",d,d,"FireTV stick",null,null,null,this.getTagsForStencil(f,"firetv fire tv stick","aws amazon web service internet of things iot resources").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".firetv;",d,d,"FireTV",null,null,null,this.getTagsForStencil(f,"firetv fire tv","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hardware_board;",d,d,"Hardware\nboard",null,null,null,this.getTagsForStencil(f,"hardware board","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http2_protocol;",
-d,d,"HTTP/2\nprotocol",null,null,null,this.getTagsForStencil(f,"http2 protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http_protocol;",d,d,"HTTP\nprotocol",null,null,null,this.getTagsForStencil(f,"http protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lambda_function;",d,d,"Lambda Function",null,null,null,this.getTagsForStencil(f,
-"lambda function","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mqtt_protocol;",d,d,"MQTT\nprotocol",null,null,null,this.getTagsForStencil(f,"mqtt protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".policy;",d,d,"Policy",null,null,null,this.getTagsForStencil(f,"policy","aws amazon web service internet of things iot resources").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".reported_state;",d,d,"Reported\nstate",null,null,null,this.getTagsForStencil(f,"reported state","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".rule;",d,d,"Rule",null,null,null,this.getTagsForStencil(f,"rule","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sensor;",d,d,"Sensor",
-null,null,null,this.getTagsForStencil(f,"sensor","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".servo;",d,d,"Servo",null,null,null,this.getTagsForStencil(f,"servo","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".shadow;",d,d,"Shadow",null,null,null,this.getTagsForStencil(f,"shadow","aws amazon web service internet of things iot resources").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".simulator;",d,d,"Simulator",null,null,null,this.getTagsForStencil(f,"simulator","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".topic_2;",d,d,"Topic",null,null,null,this.getTagsForStencil(f,"topic","aws amazon web service internet of things iot resources").join(" "))])};Sidebar.prototype.addAWS4MachineLearningPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Machine Learning",
-"AWS / Machine Learning",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sagemaker;",a,e+10,"Amazon SageMaker",null,null,null,this.getTagsForStencil(f,"sagemaker","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".comprehend;",a,e+10,"Amazon Comprehend",null,null,null,this.getTagsForStencil(f,"comprehend","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lex;",
-a,e,"Amazon Lex",null,null,null,this.getTagsForStencil(f,"lex","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".polly;",a,e,"Amazon Polly",null,null,null,this.getTagsForStencil(f,"polly","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition;",a,e+10,"Amazon Rekognition",null,null,null,this.getTagsForStencil(f,"rekognition","aws amazon web service machine learning").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition_image;",a,e+20,"Amazon Rekognition Image",null,null,null,this.getTagsForStencil(f,"rekognition image","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition_video;",a,e+20,"Amazon Rekognition Video",null,null,null,this.getTagsForStencil(f,"rekognition video","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".translate;",a,e+10,"Amazon Translate",null,null,null,this.getTagsForStencil(f,"translate","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".transcribe;",a,e+10,"Amazon Transcribe",null,null,null,this.getTagsForStencil(f,"transcribe","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".deep_learning_amis;",a,e+10,"AWS Deep Learning AMIs",null,null,null,this.getTagsForStencil(f,
-"deep learning amis","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".deeplens;",a,e,"AWS DeepLens",null,null,null,this.getTagsForStencil(f,"deeplens","aws amazon web service machine learning").join(" "))])};Sidebar.prototype.addAWS4ManagementToolsPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Management Tools","AWS / Management Tools",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudwatch;",a,e+10,"Amazon CloudWatch",
-null,null,null,this.getTagsForStencil(f,"cloudwatch","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".autoscaling;",a,e+10,"AWS Auto Scaling",null,null,null,this.getTagsForStencil(f,"auto scaling","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudformation;",a,e+10,"AWS CloudFormation",null,null,null,this.getTagsForStencil(f,"cloudformation","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudtrail;",a,e+10,"AWS\nCloudTrail",null,null,null,this.getTagsForStencil(f,"cloudtrail","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".command_line_interface;",a,e+20,"AWS\nCommand Line Interface",null,null,null,this.getTagsForStencil(f,"command line interface","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+
-".config;",a,e,"AWS Config",null,null,null,this.getTagsForStencil(f,"config","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".management_console;",a,e+20,"AWS Management Console",null,null,null,this.getTagsForStencil(f,"management console","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".managed_services;",a,e+10,"AWS Managed Services",null,null,null,this.getTagsForStencil(f,
-"managed services","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".opsworks;",a,e+10,"AWS OpsWorks",null,null,null,this.getTagsForStencil(f,"opsworks","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".service_catalog;",a,e+10,"AWS Service Catalog",null,null,null,this.getTagsForStencil(f,"service catalog","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".personal_health_dashboard;",a,e+20,"AWS Personal Health Dashboard",null,null,null,this.getTagsForStencil(f,"personal health dashboard","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".systems_manager;",a,e+10,"AWS Systems Manager",null,null,null,this.getTagsForStencil(f,"systems manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".trusted_advisor;",
-a,e+10,"AWS Trusted Advisor",null,null,null,this.getTagsForStencil(f,"trusted advisor","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".marketplace;",a,e+10,"AWS Marketplace",null,null,null,this.getTagsForStencil(f,"marketplace","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alarm;",d,d,"Alarm",null,null,null,this.getTagsForStencil(f,"alarm","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".event_event_based;",d,d,"Event (event-\nbased)",null,null,null,this.getTagsForStencil(f,"event event based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".event_time_based;",d,d,"Event (time-\nbased)",null,null,null,this.getTagsForStencil(f,"event time based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+
-".rule_2;",d,d,"Rule",null,null,null,this.getTagsForStencil(f,"rule","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".change_set;",d,d,"Change set",null,null,null,this.getTagsForStencil(f,"change set","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".stack;",d,d,"Stack",null,null,null,this.getTagsForStencil(f,"stack","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".template;",d,d,"Template",null,null,null,this.getTagsForStencil(f,"template","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".apps;",d,d,"Apps",null,null,null,this.getTagsForStencil(f,"apps","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".deployments;",d,d,"Deployments",null,null,null,this.getTagsForStencil(f,
-"deployments","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instances_2;",d,d,"Instances",null,null,null,this.getTagsForStencil(f,"instances","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".layers;",d,d,"Layers",null,null,null,this.getTagsForStencil(f,"layers","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".monitoring;",d,d,"Monitoring",null,null,null,this.getTagsForStencil(f,"monitoring","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".permissions;",d,d,"Permissions",null,null,null,this.getTagsForStencil(f,"permissions","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".resources;",d,d,"Resources",null,null,null,this.getTagsForStencil(f,"resources","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".stack2;",d,d,"Stack2",null,null,null,this.getTagsForStencil(f,"stack stack2","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".automation;",d,d,"Automation",null,null,null,this.getTagsForStencil(f,"automation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".documents;",d,d,"Documents",null,null,null,this.getTagsForStencil(f,
-"documents","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".inventory;",d,d,"Inventory",null,null,null,this.getTagsForStencil(f,"inventory","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".maintenance_windows;",d,d,"Maintenance\nwindows",null,null,null,this.getTagsForStencil(f,"maintenance windows","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".parameter_store;",d,d,"Parameter\nStore",null,null,null,this.getTagsForStencil(f,"parameter store","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".patch_manager;",d,d,"Patch\nmanager",null,null,null,this.getTagsForStencil(f,"patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".patch_manager;",d,d,"Patch\nmanager",null,null,null,
-this.getTagsForStencil(f,"patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".run_command;",d,d,"Run\ncommand",null,null,null,this.getTagsForStencil(f,"run command","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".state_manager;",d,d,"State\nmanager",null,null,null,this.getTagsForStencil(f,"state manager","aws amazon web service management tools").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_cost;",d,d,"Checklist cost",null,null,null,this.getTagsForStencil(f,"checklist cost","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_fault_tolerant;",d,d,"Checklist fault\ntolerant",null,null,null,this.getTagsForStencil(f,"checklist fault tolerant","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".checklist_performance;",d,d,"Checklist\nperformance",null,null,null,this.getTagsForStencil(f,"checklist performance","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_security;",d,d,"Checklist\nsecurity",null,null,null,this.getTagsForStencil(f,"checklist security","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist;",d,d,"Checklist",null,null,null,
-this.getTagsForStencil(f,"checklist","aws amazon web service management tools").join(" "))])};Sidebar.prototype.addAWS4MediaServicesPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Media Services","AWS / Media Services",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_transcoder;",a,e+10,"Amazon Elastic Transcoder",null,null,null,this.getTagsForStencil(f,"elastic transcoder","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".kinesis_video_streams;",a,e+20,"Amazon Kinesis Video Streams",null,null,null,this.getTagsForStencil(f,"kinesis video streams","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediaconvert;",a,e+10,"AWS Elemental MediaConvert",null,null,null,this.getTagsForStencil(f,"elemental mediaconvert","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_medialive;",a,
-e+10,"AWS Elemental MediaLive",null,null,null,this.getTagsForStencil(f,"elemental medialive","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediapackage;",a,e+10,"AWS Elemental MediaPackage",null,null,null,this.getTagsForStencil(f,"elemental mediapackage","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediastore;",a,e+10,"AWS Elemental MediaStore",null,
-null,null,this.getTagsForStencil(f,"elemental mediastore","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediatailor;",a,e+10,"AWS Elemental MediaTailor",null,null,null,this.getTagsForStencil(f,"elemental mediatailor","aws amazon web service media services").join(" "))])};Sidebar.prototype.addAWS4MigrationPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Migration","AWS / Migration",!1,[this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".migration_hub;",a,e+10,"AWS Migration Hub",null,null,null,this.getTagsForStencil(f,"migration hub","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".application_discovery_service;",a,e+35,"AWS Application Discovery Service",null,null,null,this.getTagsForStencil(f,"application discovery service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".database_migration_service;",
-a,e+20,"AWS Database Migration Service",null,null,null,this.getTagsForStencil(f,"db database migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".server_migration_service;",a,e+20,"AWS Server Migration Service",null,null,null,this.getTagsForStencil(f,"server migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball;",a,e,"AWS Snowball",null,null,null,
-this.getTagsForStencil(f,"snowball","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball_edge;",a,e+10,"AWS Snowball Edge",null,null,null,this.getTagsForStencil(f,"snowball edge","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowmobile;",a,e+10,"AWS Snowmobile",null,null,null,this.getTagsForStencil(f,"snowmobile","aws amazon web service migration").join(" "))])};Sidebar.prototype.addAWS4MobileServicesPalette=
-function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Mobile Services","AWS / Mobile Services",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".appsync;",a,e,"AWS AppSync",null,null,null,this.getTagsForStencil(f,"appsync","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".api_gateway;",a,e+10,"Amazon API Gateway",null,null,null,this.getTagsForStencil(f,"api gateway application programming interface","aws amazon web service mobile services").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".device_farm;",a,e+10,"AWS Device Farm",null,null,null,this.getTagsForStencil(f,"device farm","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".mobile_hub;",a,e+10,"AWS Mobile Hub",null,null,null,this.getTagsForStencil(f,"mobile hub","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".pinpoint;",a,e+10,"Amazon Pinpoint",
-null,null,null,this.getTagsForStencil(f,"pinpoint","aws amazon web service mobile services").join(" "))])};Sidebar.prototype.addAWS4NetworkContentDeliveryPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Network Content Delivery","AWS / Network & Content Delivery",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".vpc;",a,e,"Amazon VPC",null,null,null,this.getTagsForStencil(f,"vpc virtual private cloud","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".xray;",a,e,"AWS X-Ray",null,null,null,this.getTagsForStencil(f,"ray xray","aws amazon web service dev developer tools").join(" "))])};Sidebar.prototype.addAWS4GameDevelopmentPalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Game Development","AWS / Game Development",!1,[this.createVertexTemplateEntry("gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;"+b+"productIcon;prIcon="+f+".gamelift;",a,e+10,"Amazon GameLift",null,null,null,this.getTagsForStencil(f,
+"gamelift","aws amazon web service game development").join(" "))])};Sidebar.prototype.addAWS4InternetOfThingsPalette=function(a,e,d,b,c,f,g){b="gradientColor=#60A337;gradientDirection=north;fillColor=#277116;"+b;this.addPaletteFunctions("aws4Internet of Things","AWS / Internet of Things",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_core;",a,e+10,"Amazon IoT Core",null,null,null,this.getTagsForStencil(f,"core","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".freertos;",a,e+10,"Amazon FreeRTOS",null,null,null,this.getTagsForStencil(f,"freertos free rtos","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".greengrass;",a,e+10,"AWS Greengrass",null,null,null,this.getTagsForStencil(f,"greengrass","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_1click;",a,e+10,"AWS IoT\n1-Click",null,null,null,
+this.getTagsForStencil(f,"1click one click","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_analytics;",a,e+10,"AWS IoT Analytics",null,null,null,this.getTagsForStencil(f,"analytics","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_button;",a,e+10,"AWS IoT Button",null,null,null,this.getTagsForStencil(f,"button","aws amazon web service internet of things iot").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_device_defender;",a,e+20,"AWS IoT Device Defender",null,null,null,this.getTagsForStencil(f,"device defender","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".iot_device_management;",a,e+20,"AWS IoT Device Management",null,null,null,this.getTagsForStencil(f,"device management","aws amazon web service internet of things iot").join(" "))])};Sidebar.prototype.addAWS4IOTThingsPalette=
+function(a,e,d,b,c,f,g){c="strokeColor=#277116;"+c;this.addPaletteFunctions("aws4IoT Things","AWS / IoT Things",!1,[this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bank;",d,d,"Bank",null,null,null,this.getTagsForStencil(f,"bank","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bycicle;",d,d,"Bycicle",null,null,null,this.getTagsForStencil(f,"bycicle","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".camera;",d,d,"Camera",null,null,null,this.getTagsForStencil(f,"camera","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".car;",d,d,"Car",null,null,null,this.getTagsForStencil(f,"car","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cart;",d,d,"Cart",null,null,null,this.getTagsForStencil(f,"cart","aws amazon web service internet of things iot").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".coffee_pot;",d,d,"Coffee Pot",null,null,null,this.getTagsForStencil(f,"coffee pot","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".door_lock;",d,d,"Door Lock",null,null,null,this.getTagsForStencil(f,"door lock","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".factory;",d,d,"Factory",null,null,null,
+this.getTagsForStencil(f,"factory","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".generic;",d,d,"Generic",null,null,null,this.getTagsForStencil(f,"generic","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".house;",d,d,"House",null,null,null,this.getTagsForStencil(f,"house","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".lightbulb;",d,d,"Lightbulb",null,null,null,this.getTagsForStencil(f,"lightbulb","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".medical_emergency;",d,d,"Medical\nEmergency",null,null,null,this.getTagsForStencil(f,"medical emergency","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".police_emergency;",d,d,"Police\nEmergency",null,
+null,null,this.getTagsForStencil(f,"police emergency","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".thermostat;",d,d,"Thermostat",null,null,null,this.getTagsForStencil(f,"thermostat","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".travel;",d,d,"Travel",null,null,null,this.getTagsForStencil(f,"travel","aws amazon web service internet of things iot").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".utility;",d,d,"Utility",null,null,null,this.getTagsForStencil(f,"utility","aws amazon web service internet of things iot").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".windfarm;",d,d,"Windfarm",null,null,null,this.getTagsForStencil(f,"windfarm","aws amazon web service internet of things iot").join(" "))])};Sidebar.prototype.addAWS4IOTResourcesPalette=function(a,e,d,b,c,f,g){c="strokeColor=#277116;"+c;this.addPaletteFunctions("aws4IoT Resources",
+"AWS / IoT Resources",!1,[this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".action;",d,d,"Action",null,null,null,this.getTagsForStencil(f,"action","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".actuator;",d,d,"Actuator",null,null,null,this.getTagsForStencil(f,"actuator","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_enabled_device;",
+d,d,"Alexa enabled\ndevice",null,null,null,this.getTagsForStencil(f,"alexa enabled device","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_skill;",d,d,"Alexa skill",null,null,null,this.getTagsForStencil(f,"alexa skill","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_smart_home_skill;",d,d,"Alexa smart\nhome skill",null,null,
+null,this.getTagsForStencil(f,"alexa smart home skill","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alexa_voice_service;",d,d,"Alexa voice\nservice",null,null,null,this.getTagsForStencil(f,"alexa voice service","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".certificate_manager;",d,d,"Certificate\nmanager",null,null,null,this.getTagsForStencil(f,
+"certificate manager","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".desired_state;",d,d,"Desired state",null,null,null,this.getTagsForStencil(f,"desired state","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".echo;",d,d,"Echo",null,null,null,this.getTagsForStencil(f,"echo","aws amazon web service internet of things iot resources").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".firetv_stick;",d,d,"FireTV stick",null,null,null,this.getTagsForStencil(f,"firetv fire tv stick","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".firetv;",d,d,"FireTV",null,null,null,this.getTagsForStencil(f,"firetv fire tv","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hardware_board;",
+d,d,"Hardware\nboard",null,null,null,this.getTagsForStencil(f,"hardware board","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http2_protocol;",d,d,"HTTP/2\nprotocol",null,null,null,this.getTagsForStencil(f,"http2 protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".http_protocol;",d,d,"HTTP\nprotocol",null,null,null,this.getTagsForStencil(f,
+"http protocol","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".lambda_function;",d,d,"Lambda Function",null,null,null,this.getTagsForStencil(f,"lambda function","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mqtt_protocol;",d,d,"MQTT\nprotocol",null,null,null,this.getTagsForStencil(f,"mqtt protocol","aws amazon web service internet of things iot resources").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".policy;",d,d,"Policy",null,null,null,this.getTagsForStencil(f,"policy","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".reported_state;",d,d,"Reported\nstate",null,null,null,this.getTagsForStencil(f,"reported state","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".rule;",d,d,
+"Rule",null,null,null,this.getTagsForStencil(f,"rule","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sensor;",d,d,"Sensor",null,null,null,this.getTagsForStencil(f,"sensor","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".servo;",d,d,"Servo",null,null,null,this.getTagsForStencil(f,"servo","aws amazon web service internet of things iot resources").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".shadow;",d,d,"Shadow",null,null,null,this.getTagsForStencil(f,"shadow","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".simulator;",d,d,"Simulator",null,null,null,this.getTagsForStencil(f,"simulator","aws amazon web service internet of things iot resources").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".topic_2;",d,d,"Topic",null,
+null,null,this.getTagsForStencil(f,"topic","aws amazon web service internet of things iot resources").join(" "))])};Sidebar.prototype.addAWS4MachineLearningPalette=function(a,e,d,b,c,f,g){b="gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;"+b;this.addPaletteFunctions("aws4Machine Learning","AWS / Machine Learning",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".sagemaker;",a,e+10,"Amazon SageMaker",null,null,null,this.getTagsForStencil(f,"sagemaker","aws amazon web service machine learning").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".comprehend;",a,e+10,"Amazon Comprehend",null,null,null,this.getTagsForStencil(f,"comprehend","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".lex;",a,e,"Amazon Lex",null,null,null,this.getTagsForStencil(f,"lex","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".polly;",a,e,"Amazon Polly",null,null,null,this.getTagsForStencil(f,
+"polly","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition;",a,e+10,"Amazon Rekognition",null,null,null,this.getTagsForStencil(f,"rekognition","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".rekognition_image;",a,e+20,"Amazon Rekognition Image",null,null,null,this.getTagsForStencil(f,"rekognition image","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".rekognition_video;",a,e+20,"Amazon Rekognition Video",null,null,null,this.getTagsForStencil(f,"rekognition video","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".translate;",a,e+10,"Amazon Translate",null,null,null,this.getTagsForStencil(f,"translate","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".transcribe;",a,e+10,"Amazon Transcribe",null,
+null,null,this.getTagsForStencil(f,"transcribe","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".deep_learning_amis;",a,e+10,"AWS Deep Learning AMIs",null,null,null,this.getTagsForStencil(f,"deep learning amis","aws amazon web service machine learning").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".deeplens;",a,e,"AWS DeepLens",null,null,null,this.getTagsForStencil(f,"deeplens","aws amazon web service machine learning").join(" "))])};
+Sidebar.prototype.addAWS4ManagementToolsPalette=function(a,e,d,b,c,f,g){b="gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;"+b;c="strokeColor=#BC1356;"+c;this.addPaletteFunctions("aws4Management Tools","AWS / Management Tools",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudwatch;",a,e+10,"Amazon CloudWatch",null,null,null,this.getTagsForStencil(f,"cloudwatch","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".autoscaling;",a,e+10,"AWS Auto Scaling",null,null,null,this.getTagsForStencil(f,"auto scaling","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudformation;",a,e+10,"AWS CloudFormation",null,null,null,this.getTagsForStencil(f,"cloudformation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudtrail;",a,e+10,"AWS\nCloudTrail",null,null,null,this.getTagsForStencil(f,
+"cloudtrail","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".command_line_interface;",a,e+20,"AWS\nCommand Line Interface",null,null,null,this.getTagsForStencil(f,"command line interface","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".config;",a,e,"AWS Config",null,null,null,this.getTagsForStencil(f,"config","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".management_console;",a,e+20,"AWS Management Console",null,null,null,this.getTagsForStencil(f,"management console","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".managed_services;",a,e+10,"AWS Managed Services",null,null,null,this.getTagsForStencil(f,"managed services","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".opsworks;",a,e+10,"AWS OpsWorks",
+null,null,null,this.getTagsForStencil(f,"opsworks","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".service_catalog;",a,e+10,"AWS Service Catalog",null,null,null,this.getTagsForStencil(f,"service catalog","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".personal_health_dashboard;",a,e+20,"AWS Personal Health Dashboard",null,null,null,this.getTagsForStencil(f,"personal health dashboard",
+"aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".systems_manager;",a,e+10,"AWS Systems Manager",null,null,null,this.getTagsForStencil(f,"systems manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".trusted_advisor;",a,e+10,"AWS Trusted Advisor",null,null,null,this.getTagsForStencil(f,"trusted advisor","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".marketplace;",a,e+10,"AWS Marketplace",null,null,null,this.getTagsForStencil(f,"marketplace","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".alarm;",d,d,"Alarm",null,null,null,this.getTagsForStencil(f,"alarm","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".event_event_based;",d,d,"Event (event-\nbased)",null,null,null,this.getTagsForStencil(f,
+"event event based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".event_time_based;",d,d,"Event (time-\nbased)",null,null,null,this.getTagsForStencil(f,"event time based","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".rule_2;",d,d,"Rule",null,null,null,this.getTagsForStencil(f,"rule","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".change_set;",d,d,"Change set",null,null,null,this.getTagsForStencil(f,"change set","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".stack;",d,d,"Stack",null,null,null,this.getTagsForStencil(f,"stack","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".template;",d,d,"Template",null,null,null,this.getTagsForStencil(f,"template","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".apps;",d,d,"Apps",null,null,null,this.getTagsForStencil(f,"apps","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".deployments;",d,d,"Deployments",null,null,null,this.getTagsForStencil(f,"deployments","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".instances_2;",d,d,"Instances",null,null,null,this.getTagsForStencil(f,
+"instances","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".layers;",d,d,"Layers",null,null,null,this.getTagsForStencil(f,"layers","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".monitoring;",d,d,"Monitoring",null,null,null,this.getTagsForStencil(f,"monitoring","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".permissions;",d,d,"Permissions",null,null,null,this.getTagsForStencil(f,"permissions","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".resources;",d,d,"Resources",null,null,null,this.getTagsForStencil(f,"resources","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".stack2;",d,d,"Stack2",null,null,null,this.getTagsForStencil(f,"stack stack2","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".automation;",d,d,"Automation",null,null,null,this.getTagsForStencil(f,"automation","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".documents;",d,d,"Documents",null,null,null,this.getTagsForStencil(f,"documents","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".inventory;",d,d,"Inventory",null,null,null,this.getTagsForStencil(f,
+"inventory","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".maintenance_windows;",d,d,"Maintenance\nwindows",null,null,null,this.getTagsForStencil(f,"maintenance windows","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".parameter_store;",d,d,"Parameter\nStore",null,null,null,this.getTagsForStencil(f,"parameter store","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".patch_manager;",d,d,"Patch\nmanager",null,null,null,this.getTagsForStencil(f,"patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".patch_manager;",d,d,"Patch\nmanager",null,null,null,this.getTagsForStencil(f,"patch manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".run_command;",d,d,"Run\ncommand",
+null,null,null,this.getTagsForStencil(f,"run command","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".state_manager;",d,d,"State\nmanager",null,null,null,this.getTagsForStencil(f,"state manager","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_cost;",d,d,"Checklist cost",null,null,null,this.getTagsForStencil(f,"checklist cost","aws amazon web service management tools").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_fault_tolerant;",d,d,"Checklist fault\ntolerant",null,null,null,this.getTagsForStencil(f,"checklist fault tolerant","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist_performance;",d,d,"Checklist\nperformance",null,null,null,this.getTagsForStencil(f,"checklist performance","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+
+"resourceIcon;resIcon="+f+".checklist_security;",d,d,"Checklist\nsecurity",null,null,null,this.getTagsForStencil(f,"checklist security","aws amazon web service management tools").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".checklist;",d,d,"Checklist",null,null,null,this.getTagsForStencil(f,"checklist","aws amazon web service management tools").join(" "))])};Sidebar.prototype.addAWS4MediaServicesPalette=function(a,e,d,b,c,f,g){b="gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;"+
+b;this.addPaletteFunctions("aws4Media Services","AWS / Media Services",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_transcoder;",a,e+10,"Amazon Elastic Transcoder",null,null,null,this.getTagsForStencil(f,"elastic transcoder","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".kinesis_video_streams;",a,e+20,"Amazon Kinesis Video Streams",null,null,null,this.getTagsForStencil(f,"kinesis video streams","aws amazon web service media services").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediaconvert;",a,e+10,"AWS Elemental MediaConvert",null,null,null,this.getTagsForStencil(f,"elemental mediaconvert","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_medialive;",a,e+10,"AWS Elemental MediaLive",null,null,null,this.getTagsForStencil(f,"elemental medialive","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".elemental_mediapackage;",a,e+10,"AWS Elemental MediaPackage",null,null,null,this.getTagsForStencil(f,"elemental mediapackage","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediastore;",a,e+10,"AWS Elemental MediaStore",null,null,null,this.getTagsForStencil(f,"elemental mediastore","aws amazon web service media services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elemental_mediatailor;",a,e+10,
+"AWS Elemental MediaTailor",null,null,null,this.getTagsForStencil(f,"elemental mediatailor","aws amazon web service media services").join(" "))])};Sidebar.prototype.addAWS4MigrationPalette=function(a,e,d,b,c,f,g){b="gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;"+b;this.addPaletteFunctions("aws4Migration","AWS / Migration",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".migration_hub;",a,e+10,"AWS Migration Hub",null,null,null,this.getTagsForStencil(f,"migration hub",
+"aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".application_discovery_service;",a,e+35,"AWS Application Discovery Service",null,null,null,this.getTagsForStencil(f,"application discovery service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".database_migration_service;",a,e+20,"AWS Database Migration Service",null,null,null,this.getTagsForStencil(f,"db database migration service","aws amazon web service migration").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".server_migration_service;",a,e+20,"AWS Server Migration Service",null,null,null,this.getTagsForStencil(f,"server migration service","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball;",a,e,"AWS Snowball",null,null,null,this.getTagsForStencil(f,"snowball","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball_edge;",a,
+e+10,"AWS Snowball Edge",null,null,null,this.getTagsForStencil(f,"snowball edge","aws amazon web service migration").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowmobile;",a,e+10,"AWS Snowmobile",null,null,null,this.getTagsForStencil(f,"snowmobile","aws amazon web service migration").join(" "))])};Sidebar.prototype.addAWS4MobileServicesPalette=function(a,e,d,b,c,f,g){b="gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;"+b;this.addPaletteFunctions("aws4Mobile Services",
+"AWS / Mobile Services",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".appsync;",a,e,"AWS AppSync",null,null,null,this.getTagsForStencil(f,"appsync","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".api_gateway;",a,e+10,"Amazon API Gateway",null,null,null,this.getTagsForStencil(f,"api gateway application programming interface","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".device_farm;",a,e+10,"AWS Device Farm",null,null,null,this.getTagsForStencil(f,"device farm","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".mobile_hub;",a,e+10,"AWS Mobile Hub",null,null,null,this.getTagsForStencil(f,"mobile hub","aws amazon web service mobile services").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".pinpoint;",a,e+10,"Amazon Pinpoint",null,null,null,this.getTagsForStencil(f,"pinpoint","aws amazon web service mobile services").join(" "))])};
+Sidebar.prototype.addAWS4NetworkContentDeliveryPalette=function(a,e,d,b,c,f,g){b="gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;"+b;c="strokeColor=#5A30B5;"+c;this.addPaletteFunctions("aws4Network Content Delivery","AWS / Network & Content Delivery",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".vpc;",a,e,"Amazon VPC",null,null,null,this.getTagsForStencil(f,"vpc virtual private cloud","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+
 "productIcon;prIcon="+f+".api_gateway;",a,e+10,"Amazon API Gateway",null,null,null,this.getTagsForStencil(f,"api application programming interface gateway","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudfront;",a,e+10,"Amazon Cloudfront",null,null,null,this.getTagsForStencil(f,"cloudfront","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".privatelink;",
 a,e+10,"AWS PrivateLink",null,null,null,this.getTagsForStencil(f,"privatelink","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".route_53;",a,e+10,"Amazon Route 53",null,null,null,this.getTagsForStencil(f,"route 53","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".direct_connect;",a,e+10,"AWS Direct Connect",null,null,null,this.getTagsForStencil(f,"direct connect",
 "aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".customer_gateway;",d,d,"Customer\ngateway",null,null,null,this.getTagsForStencil(f,"customer gateway","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".elastic_network_adapter;",d,d,"Elastic\nnetwork\nadapter",null,null,null,this.getTagsForStencil(f,"elastic network adapter","aws amazon web service netowrk content delivery").join(" ")),
@@ -4141,26 +4147,27 @@ f+".flow_logs;",d,d,"Flow logs",null,null,null,this.getTagsForStencil(f,"flow lo
 this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".router;",d,d,"Router",null,null,null,this.getTagsForStencil(f,"router","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".vpn_connection;",d,d,"VPN\nConnection",null,null,null,this.getTagsForStencil(f,"vpn virtual private network connection","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".vpn_gateway;",
 d,d,"VPN Gateway",null,null,null,this.getTagsForStencil(f,"vpn virtual private network gateway","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".download_distribution;",d,d,"Download\ndistribution",null,null,null,this.getTagsForStencil(f,"download distribution","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".edge_location;",d,d,"Edge location",null,null,
 null,this.getTagsForStencil(f,"edge location","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".streaming_distribution;",d,d,"Streaming\ndistribution",null,null,null,this.getTagsForStencil(f,"streaming distribution","aws amazon web service netowrk content delivery").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".hosted_zone;",d,d,"Hosted zone",null,null,null,this.getTagsForStencil(f,"hosted zone","aws amazon web service netowrk content delivery").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".route_table;",d,d,"Route table",null,null,null,this.getTagsForStencil(f,"route table","aws amazon web service netowrk content delivery").join(" "))])};Sidebar.prototype.addAWS4SecurityIdentityCompliancePalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Security Identity Compliance","AWS / Security, Identity & Compliance",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".identity_and_access_management;",a,e+20,"AWS Identity and Access Management",
-null,null,null,this.getTagsForStencil(f,"identity and access management","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cognito;",a,e+10,"Amazon Cognito",null,null,null,this.getTagsForStencil(f,"cognito","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".guardduty;",a,e+10,"Amazon GuardDuty",null,null,null,this.getTagsForStencil(f,"guard duty guardduty",
-"aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".inspector;",a,e+10,"Amazon Inspector",null,null,null,this.getTagsForStencil(f,"inspector","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".artifact;",a,e,"AWS Artifact",null,null,null,this.getTagsForStencil(f,"artifact","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+
-"productIcon;prIcon="+f+".certificate_manager_3;",a,e+10,"AWS Certificate Manager",null,null,null,this.getTagsForStencil(f,"certificate manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudhsm;",a,e+10,"AWS CloudHSM",null,null,null,this.getTagsForStencil(f,"cloudhsm","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".directory_service;",a,
-e+10,"AWS Directory Service",null,null,null,this.getTagsForStencil(f,"directory service","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".firewall_manager;",a,e+10,"AWS Firewall Manager",null,null,null,this.getTagsForStencil(f,"firewall manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".key_management_service;",a,e+20,"AWS Key Management Service",
-null,null,null,this.getTagsForStencil(f,"key management service","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".secrets_manager;",a,e+10,"AWS Secrets Manager",null,null,null,this.getTagsForStencil(f,"secrets manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".shield;",a,e,"AWS Shield",null,null,null,this.getTagsForStencil(f,"shield","aws amazon web service security identity compliance").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".single_sign_on;",a,e+10,"AWS Single Sign-On",null,null,null,this.getTagsForStencil(f,"single sign on","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".waf;",a,e,"AWS WAF",null,null,null,this.getTagsForStencil(f,"waf","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".addon;",d,d,"Add-on",null,
-null,null,this.getTagsForStencil(f,"addon add on","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sts;",d,d,"AWS STS",null,null,null,this.getTagsForStencil(f,"sts","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sts_alternate;",d,d,"AWS STS\n(alternate)",null,null,null,this.getTagsForStencil(f,"sts alternate","aws amazon web service security identity compliance").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".data_encryption_key;",d,d,"Data\nencryption\nkey",null,null,null,this.getTagsForStencil(f,"data encryption key","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".encrypted_data;",d,d,"Encrypted\ndata",null,null,null,this.getTagsForStencil(f,"encrypted data","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
-f+".long_term_security_credential;",d,d,"Long-term\nsecurity\ncredential",null,null,null,this.getTagsForStencil(f,"long term security credential","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mfa_token;",d,d,"MFA Token",null,null,null,this.getTagsForStencil(f,"mfa token","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".permissions;",d,d,"Permissions",
-null,null,null,this.getTagsForStencil(f,"permissions","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".role;",d,d,"Role",null,null,null,this.getTagsForStencil(f,"role","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".temporary_security_credential;",d,d,"Temporary\nsecurity\ncredential",null,null,null,this.getTagsForStencil(f,"temporary security credential",
-"aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".agent;",d,d,"Agent",null,null,null,this.getTagsForStencil(f,"agent","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".certificate_manager_2;",d,d,"Certificate\nmanager",null,null,null,this.getTagsForStencil(f,"certificate manager","aws amazon web service security identity compliance").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".filtering_rule;",d,d,"Filtering rule",null,null,null,this.getTagsForStencil(f,"filtering rule","aws amazon web service security identity compliance").join(" "))])};Sidebar.prototype.addAWS4StoragePalette=function(a,e,d,b,c,f,g){this.addPaletteFunctions("aws4Storage","AWS / Storage",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".s3;",a,e,"Amazon S3",null,null,null,this.getTagsForStencil(f,"s3","aws amazon web service storage").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_block_store;",a,e+10,"Amazon Elastic Block Store",null,null,null,this.getTagsForStencil(f,"elastic block store","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_file_system;",a,e+10,"Amazon Elastic File System",null,null,null,this.getTagsForStencil(f,"elastic file system","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
-f+".glacier;",a,e+10,"Amazon Glacier",null,null,null,this.getTagsForStencil(f,"glacier","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball;",a,e,"AWS Snowball",null,null,null,this.getTagsForStencil(f,"snowball","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball_edge;",a,e+10,"AWS Snowball Edge",null,null,null,this.getTagsForStencil(f,"snowball edge","aws amazon web service storage").join(" ")),
-this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowmobile;",a,e+10,"AWS Snowmobile",null,null,null,this.getTagsForStencil(f,"snowmobile","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".storage_gateway;",a,e+10,"AWS Storage Gateway",null,null,null,this.getTagsForStencil(f,"storage gateway","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bucket;",d,d,"Bucket",null,null,null,
-this.getTagsForStencil(f,"bucket","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".snapshot;",d,d,"Snapshot",null,null,null,this.getTagsForStencil(f,"snapshot","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bucket_with_objects;",d,d,"Bucket with\nobjects",null,null,null,this.getTagsForStencil(f,"bucket with objects","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+
-"resourceIcon;resIcon="+f+".volume;",d,d,"Volume",null,null,null,this.getTagsForStencil(f,"volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".object;",d,d,"Object",null,null,null,this.getTagsForStencil(f,"object","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".archive;",d,d,"Archive",null,null,null,this.getTagsForStencil(f,"archive","aws amazon web service storage").join(" ")),
-this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".vault;",d,d,"Vault",null,null,null,this.getTagsForStencil(f,"vault","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".import_export;",d,d,"Import/Export",null,null,null,this.getTagsForStencil(f,"import export","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cached_volume;",d,d,"Cached\nvolume",null,null,null,this.getTagsForStencil(f,
-"cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".non_cached_volume;",d,d,"Non-Cached\nvolume",null,null,null,this.getTagsForStencil(f,"non cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".virtual_tape_library;",d,d,"Virtual tape\nlibrary",null,null,null,this.getTagsForStencil(f,"virtual tape library vtl","aws amazon web service storage").join(" "))])}})();(function(){Sidebar.prototype.addAzurePalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;strokeColor=none;fillColor=#00BEF2;shape=mxgraph.azure.";this.addPaletteFunctions("azure",mxResources.get("azure"),!1,[this.createVertexTemplateEntry(a+"access_control;",50,50,"","Access Control",null,null,this.getTagsForStencil("mxgraph.azure","access_control","").join(" ")),this.createVertexTemplateEntry(a+"automation;",50,
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".route_table;",d,d,"Route table",null,null,null,this.getTagsForStencil(f,"route table","aws amazon web service netowrk content delivery").join(" "))])};Sidebar.prototype.addAWS4SecurityIdentityCompliancePalette=function(a,e,d,b,c,f,g){b="gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;"+b;c="strokeColor=#C7131F;"+c;this.addPaletteFunctions("aws4Security Identity Compliance","AWS / Security, Identity & Compliance",!1,[this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".identity_and_access_management;",a,e+20,"AWS Identity and Access Management",null,null,null,this.getTagsForStencil(f,"identity and access management","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cognito;",a,e+10,"Amazon Cognito",null,null,null,this.getTagsForStencil(f,"cognito","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".guardduty;",a,e+10,"Amazon GuardDuty",null,null,null,this.getTagsForStencil(f,"guard duty guardduty","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".inspector;",a,e+10,"Amazon Inspector",null,null,null,this.getTagsForStencil(f,"inspector","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".artifact;",a,e,"AWS Artifact",null,null,null,this.getTagsForStencil(f,
+"artifact","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".certificate_manager_3;",a,e+10,"AWS Certificate Manager",null,null,null,this.getTagsForStencil(f,"certificate manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".cloudhsm;",a,e+10,"AWS CloudHSM",null,null,null,this.getTagsForStencil(f,"cloudhsm","aws amazon web service security identity compliance").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".directory_service;",a,e+10,"AWS Directory Service",null,null,null,this.getTagsForStencil(f,"directory service","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".firewall_manager;",a,e+10,"AWS Firewall Manager",null,null,null,this.getTagsForStencil(f,"firewall manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+
+"productIcon;prIcon="+f+".key_management_service;",a,e+20,"AWS Key Management Service",null,null,null,this.getTagsForStencil(f,"key management service","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".secrets_manager;",a,e+10,"AWS Secrets Manager",null,null,null,this.getTagsForStencil(f,"secrets manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+
+f+".shield;",a,e,"AWS Shield",null,null,null,this.getTagsForStencil(f,"shield","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".single_sign_on;",a,e+10,"AWS Single Sign-On",null,null,null,this.getTagsForStencil(f,"single sign on","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".waf;",a,e,"AWS WAF",null,null,null,this.getTagsForStencil(f,"waf","aws amazon web service security identity compliance").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".addon;",d,d,"Add-on",null,null,null,this.getTagsForStencil(f,"addon add on","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sts;",d,d,"AWS STS",null,null,null,this.getTagsForStencil(f,"sts","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".sts_alternate;",d,d,"AWS STS\n(alternate)",null,
+null,null,this.getTagsForStencil(f,"sts alternate","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".data_encryption_key;",d,d,"Data\nencryption\nkey",null,null,null,this.getTagsForStencil(f,"data encryption key","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".encrypted_data;",d,d,"Encrypted\ndata",null,null,null,this.getTagsForStencil(f,"encrypted data",
+"aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".long_term_security_credential;",d,d,"Long-term\nsecurity\ncredential",null,null,null,this.getTagsForStencil(f,"long term security credential","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".mfa_token;",d,d,"MFA Token",null,null,null,this.getTagsForStencil(f,"mfa token","aws amazon web service security identity compliance").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".permissions;",d,d,"Permissions",null,null,null,this.getTagsForStencil(f,"permissions","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".role;",d,d,"Role",null,null,null,this.getTagsForStencil(f,"role","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".temporary_security_credential;",d,d,
+"Temporary\nsecurity\ncredential",null,null,null,this.getTagsForStencil(f,"temporary security credential","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".agent;",d,d,"Agent",null,null,null,this.getTagsForStencil(f,"agent","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".certificate_manager_2;",d,d,"Certificate\nmanager",null,null,null,this.getTagsForStencil(f,
+"certificate manager","aws amazon web service security identity compliance").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".filtering_rule;",d,d,"Filtering rule",null,null,null,this.getTagsForStencil(f,"filtering rule","aws amazon web service security identity compliance").join(" "))])};Sidebar.prototype.addAWS4StoragePalette=function(a,e,d,b,c,f,g){b="gradientColor=#60A337;gradientDirection=north;fillColor=#277116;"+b;c="strokeColor=#277116;"+c;this.addPaletteFunctions("aws4Storage",
+"AWS / Storage",!1,[this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".s3;",a,e,"Amazon S3",null,null,null,this.getTagsForStencil(f,"s3","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_block_store;",a,e+10,"Amazon Elastic Block Store",null,null,null,this.getTagsForStencil(f,"elastic block store","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".elastic_file_system;",a,e+10,
+"Amazon Elastic File System",null,null,null,this.getTagsForStencil(f,"elastic file system","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".glacier;",a,e+10,"Amazon Glacier",null,null,null,this.getTagsForStencil(f,"glacier","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball;",a,e,"AWS Snowball",null,null,null,this.getTagsForStencil(f,"snowball","aws amazon web service storage").join(" ")),
+this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowball_edge;",a,e+10,"AWS Snowball Edge",null,null,null,this.getTagsForStencil(f,"snowball edge","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".snowmobile;",a,e+10,"AWS Snowmobile",null,null,null,this.getTagsForStencil(f,"snowmobile","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(b+"productIcon;prIcon="+f+".storage_gateway;",a,e+10,"AWS Storage Gateway",
+null,null,null,this.getTagsForStencil(f,"storage gateway","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".bucket;",d,d,"Bucket",null,null,null,this.getTagsForStencil(f,"bucket","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".snapshot;",d,d,"Snapshot",null,null,null,this.getTagsForStencil(f,"snapshot","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".bucket_with_objects;",d,d,"Bucket with\nobjects",null,null,null,this.getTagsForStencil(f,"bucket with objects","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".volume;",d,d,"Volume",null,null,null,this.getTagsForStencil(f,"volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".object;",d,d,"Object",null,null,null,this.getTagsForStencil(f,"object","aws amazon web service storage").join(" ")),
+this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".archive;",d,d,"Archive",null,null,null,this.getTagsForStencil(f,"archive","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".vault;",d,d,"Vault",null,null,null,this.getTagsForStencil(f,"vault","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".import_export;",d,d,"Import/Export",null,null,null,this.getTagsForStencil(f,"import export",
+"aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".cached_volume;",d,d,"Cached\nvolume",null,null,null,this.getTagsForStencil(f,"cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+f+".non_cached_volume;",d,d,"Non-Cached\nvolume",null,null,null,this.getTagsForStencil(f,"non cached volume","aws amazon web service storage").join(" ")),this.createVertexTemplateEntry(c+"resourceIcon;resIcon="+
+f+".virtual_tape_library;",d,d,"Virtual tape\nlibrary",null,null,null,this.getTagsForStencil(f,"virtual tape library vtl","aws amazon web service storage").join(" "))])}})();(function(){Sidebar.prototype.addAzurePalette=function(){var a=mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;html=1;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;align=center;strokeColor=none;fillColor=#00BEF2;shape=mxgraph.azure.";this.addPaletteFunctions("azure",mxResources.get("azure"),!1,[this.createVertexTemplateEntry(a+"access_control;",50,50,"","Access Control",null,null,this.getTagsForStencil("mxgraph.azure","access_control","").join(" ")),this.createVertexTemplateEntry(a+"automation;",50,
 45,"","Automation",null,null,this.getTagsForStencil("mxgraph.azure","automation","").join(" ")),this.createVertexTemplateEntry(a+"autoscale;",50,30,"","AutoScale",null,null,this.getTagsForStencil("mxgraph.azure","autoscale","").join(" ")),this.createVertexTemplateEntry(a+"azure_active_directory;",47.5,50,"","Azure Active Directory",null,null,this.getTagsForStencil("mxgraph.azure","azure_active_directory","").join(" ")),this.createVertexTemplateEntry(a+"azure_alert;",50,42.5,"","Azure Alert",null,
 null,this.getTagsForStencil("mxgraph.azure","azure_alert","").join(" ")),this.createVertexTemplateEntry(a+"azure_cache;",45,50,"","Azure Cache",null,null,this.getTagsForStencil("mxgraph.azure","azure_cache","").join(" ")),this.createVertexTemplateEntry(a+"azure_instance;",50,50,"","Azure Instance",null,null,this.getTagsForStencil("mxgraph.azure","azure_instance","").join(" ")),this.createVertexTemplateEntry(a+"azure_load_balancer;",50,35,"","Azure Load Balancer",null,null,this.getTagsForStencil("mxgraph.azure",
 "azure_load_balancer","").join(" ")),this.createVertexTemplateEntry(a+"azure_marketplace;",40,50,"","Azure Marketplace",null,null,this.getTagsForStencil("mxgraph.azure","azure_marketplace","").join(" ")),this.createVertexTemplateEntry(a+"azure_sdk;",50,47.5,"","Azure SDK",null,null,this.getTagsForStencil("mxgraph.azure","azure_sdk","").join(" ")),this.createVertexTemplateEntry(a+"azure_subscription;",50,35,"","Azure Subscription",null,null,this.getTagsForStencil("mxgraph.azure","azure_subscription",
@@ -7429,22 +7436,23 @@ DrawioFile=function(b,c){mxEventSource.call(this);this.ui=b;this.shadowData=this
 DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.modified=!1;DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=18E5;DrawioFile.prototype.inConflictState=!1;
 DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(b,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(b,c):this.updateFile(b,c)};
 DrawioFile.prototype.updateFile=function(b,c,a,e){null!=a&&a()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=a&&a()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=k?this.mergeFile(k,b,c,e):this.reloadFile(b,c))}catch(f){null!=c&&c(f)}}),c))};
-DrawioFile.prototype.mergeFile=function(b,c,a,e){var k=!0;try{this.stats.fileMerged++;var f=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),l=this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement);if(null!=l&&0<l.length){this.shadowPages=l;this.backupPatch=this.isModified()?this.ui.diffPages(f,this.ui.pages):null;var q=[this.ui.diffPages(null!=e?e:f,this.shadowPages)];if(!this.ignorePatches(q)){var p=this.ui.patchPages(f,
-q[0]);e={};var u=this.ui.getHashValueForPages(p,e),f={},d=this.ui.getHashValueForPages(this.shadowPages,f);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",q,"checksum",d==u,u);if(null!=u&&u!=d){var g=this.compressReportData(this.getAnonymizedXmlForPages(l)),m=this.compressReportData(this.getAnonymizedXmlForPages(p)),v=this.ui.hashValue(b.getCurrentEtag()),t=this.ui.hashValue(this.getCurrentEtag());this.checksumError(a,q,"Shadow Details: "+JSON.stringify(e)+
-"\nChecksum: "+u+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+v+"\nTo: "+t+"\n\nFile Data:\n"+g+"\nPatched Shadow:\n"+m,null,"mergeFile");return}this.patch(q,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(y){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
-null!=a&&a(y);try{this.errorReportsEnabled&&k&&this.sendErrorReport("Error in mergeFile",null,y)}catch(B){}}};DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var c=new mxCodec(mxUtils.createXmlDocument()),a=c.document.createElement("mxfile");if(null!=b)for(var e=0;e<b.length;e++){var k=c.encode(new mxGraphModel(b[e].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",b[e].getId());b[e].viewState&&this.ui.editor.graph.saveViewState(b[e].viewState,k,!0);a.appendChild(k)}return mxUtils.getPrettyXml(a)};
+DrawioFile.prototype.mergeFile=function(b,c,a,e){var k=!0;try{this.stats.fileMerged++;var f=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),l=this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement);if(null!=l&&0<l.length){this.shadowPages=l;this.backupPatch=this.isModified()?this.ui.diffPages(f,this.ui.pages):null;var p=[this.ui.diffPages(null!=e?e:f,this.shadowPages)];if(!this.ignorePatches(p)){var q=this.ui.patchPages(f,
+p[0]);e={};var u=this.ui.getHashValueForPages(q,e),f={},d=this.ui.getHashValueForPages(this.shadowPages,f);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",p,"checksum",d==u,u);if(null!=u&&u!=d){var g=this.compressReportData(this.getAnonymizedXmlForPages(l)),m=this.compressReportData(this.getAnonymizedXmlForPages(q)),v=this.ui.hashValue(b.getCurrentEtag()),t=this.ui.hashValue(this.getCurrentEtag());this.checksumError(a,p,"Shadow Details: "+JSON.stringify(e)+
+"\nChecksum: "+u+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+v+"\nTo: "+t+"\n\nFile Data:\n"+g+"\nPatched Shadow:\n"+m,null,"mergeFile");return}this.patch(p,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(n){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+null!=a&&a(n);try{if(k)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,n);else{var y=this.getCurrentUser(),A=null!=y?y.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),A,n)}}catch(x){}}};
+DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var c=new mxCodec(mxUtils.createXmlDocument()),a=c.document.createElement("mxfile");if(null!=b)for(var e=0;e<b.length;e++){var k=c.encode(new mxGraphModel(b[e].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",b[e].getId());b[e].viewState&&this.ui.editor.graph.saveViewState(b[e].viewState,k,!0);a.appendChild(k)}return mxUtils.getPrettyXml(a)};
 DrawioFile.prototype.compressReportData=function(b,c,a){c=null!=c?c:1E4;null!=a&&null!=b&&b.length>a?b=b.substring(0,a)+"[...]":null!=b&&b.length>c&&(b=this.ui.editor.graph.compress(b)+"\n");return b};
 DrawioFile.prototype.checksumError=function(b,c,a,e,k){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!=c)for(b=0;b<c.length;b++)this.ui.anonymizePatch(c[b]);var f=mxUtils.bind(this,function(b){var e=this.compressReportData(JSON.stringify(c,null,2));b=null!=b?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement)),
-25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=a?a:"")+"\n\nPatches:\n"+e+(null!=b?"\n\nRemote:\n"+b:""),null,7E4)});null==e?f(null):this.getLatestVersion(mxUtils.bind(this,function(b){null!=b&&b.getCurrentEtag()==e?f(b):f(null)}),function(){})}}catch(l){}};
-DrawioFile.prototype.sendErrorReport=function(b,c,a,e){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),f=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),l=this.getCurrentUser(),q=null!=l?this.ui.hashValue(l.id):"unknown",p=null!=this.sync?this.sync.clientId:"no sync",u=this.getTitle(),d=u.lastIndexOf("."),l="xml";0<d&&(l=u.substring(d));var g=null!=a?a.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+":\n\nBrowser="+
-navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+l+")\nUser="+q+" ("+p+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:"")+(null!=a?"\n\nError: "+
+25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=a?a:"")+"\n\nPatches:\n"+e+(null!=b?"\n\nRemote:\n"+b:""),null,7E4)});null==e?f(null):this.getLatestVersion(mxUtils.bind(this,function(b){null!=b&&b.getCurrentEtag()==e?f(b):f(null)}),function(){})}else{var l=this.getCurrentUser(),p=null!=l?l.id:"unknown";EditorUi.logError("Checksum Error in "+k,null,this.getMode()+"."+this.getId(),p)}}catch(q){}};
+DrawioFile.prototype.sendErrorReport=function(b,c,a,e){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),f=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),l=this.getCurrentUser(),p=null!=l?this.ui.hashValue(l.id):"unknown",q=null!=this.sync?this.sync.clientId:"no sync",u=this.getTitle(),d=u.lastIndexOf("."),l="xml";0<d&&(l=u.substring(d));var g=null!=a?a.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+":\n\nBrowser="+
+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+l+")\nUser="+p+" ("+q+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:"")+(null!=a?"\n\nError: "+
 a.message:"")+"\n\nStack:\n"+g+"\n\nShadow:\n"+k+"\n\nData:\n"+f,e)}catch(m){}};
 DrawioFile.prototype.reloadFile=function(b,c){try{this.ui.spinner.stop();var a=mxUtils.bind(this,function(){this.stats.fileReloaded++;this.reportEnabled=!1;var a=this.ui.editor.graph.getViewState(),c=this.ui.editor.graph.getSelectionCells(),f=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(f,a,c);null!=this.backupPatch&&this.patch([this.backupPatch]);var e=this.ui.getCurrentFile();null!=e&&(e.stats=
 this.stats);null!=b&&b()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),a,mxResources.get("cancel"),mxResources.get("discardChanges")):a()}catch(e){null!=c&&c(e)}};DrawioFile.prototype.copyFile=function(b,c){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))};
 DrawioFile.prototype.ignorePatches=function(b){for(var c=!0,a=0;a<b.length&&c;a++)c=c&&0==Object.keys(b[a]).length;return c};
-DrawioFile.prototype.patch=function(b,c){var a=this.ui.editor.undoManager,e=a.history.slice(),k=a.indexOfNextAdd,f=this.ui.editor.graph;f.container.style.visibility="hidden";var l=this.changeListenerEnabled;this.changeListenerEnabled=!1;var q=f.foldingEnabled,p=f.mathEnabled,u=f.cellRenderer.redraw;f.cellRenderer.redraw=function(b){b.view.graph.isEditing(b.cell)&&(b.view.graph.scrollCellToVisible(b.cell),b.view.graph.cellEditor.resize());u.apply(this,arguments)};f.model.beginUpdate();try{for(var d=
-0;d<b.length;d++)this.ui.pages=this.ui.patchPages(this.ui.pages,b[d],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{f.container.style.visibility="";f.model.endUpdate();f.cellRenderer.redraw=u;this.changeListenerEnabled=l;a.history=e;a.indexOfNextAdd=k;a.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)p!=
-f.mathEnabled?(this.ui.editor.updateGraphComponents(),f.refresh()):(q!=f.foldingEnabled?f.view.revalidate():f.view.validate(),f.sizeDidChange());this.ui.updateTabContainer()}};
+DrawioFile.prototype.patch=function(b,c){var a=this.ui.editor.undoManager,e=a.history.slice(),k=a.indexOfNextAdd,f=this.ui.editor.graph;f.container.style.visibility="hidden";var l=this.changeListenerEnabled;this.changeListenerEnabled=!1;var p=f.foldingEnabled,q=f.mathEnabled,u=f.cellRenderer.redraw;f.cellRenderer.redraw=function(b){b.view.graph.isEditing(b.cell)&&(b.view.graph.scrollCellToVisible(b.cell),b.view.graph.cellEditor.resize());u.apply(this,arguments)};f.model.beginUpdate();try{for(var d=
+0;d<b.length;d++)this.ui.pages=this.ui.patchPages(this.ui.pages,b[d],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{f.container.style.visibility="";f.model.endUpdate();f.cellRenderer.redraw=u;this.changeListenerEnabled=l;a.history=e;a.indexOfNextAdd=k;a.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)q!=
+f.mathEnabled?(this.ui.editor.updateGraphComponents(),f.refresh()):(p!=f.foldingEnabled?f.view.revalidate():f.view.validate(),f.sizeDidChange());this.ui.updateTabContainer()}};
 DrawioFile.prototype.save=function(b,c,a,e,k,f){if(this.isEditable())if(!k&&this.invalidChecksum)if(null!=a)a({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave();else if(null!=a)a({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));};DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this))};
 DrawioFile.prototype.saveAs=function(b,c,a){};DrawioFile.prototype.saveFile=function(b,c,a,e){};DrawioFile.prototype.getPublicUrl=function(b){b(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.setModified=function(b){this.modified=b};DrawioFile.prototype.isAutosaveOptional=function(){return!1};DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};
 DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(b,c,a){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.move=function(b,c,a){};DrawioFile.prototype.getHash=function(){return""};DrawioFile.prototype.getId=function(){return""};DrawioFile.prototype.isEditable=function(){return!this.ui.editor.isChromelessView()||this.ui.editor.editable};DrawioFile.prototype.getUi=function(){return this.ui};DrawioFile.prototype.getTitle=function(){return""};
@@ -7473,7 +7481,8 @@ DrawioFile.prototype.handleConflictError=function(b,c){var a=mxUtils.bind(this,f
 function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,a,e,null,null,this.constructor==GitHubFile&&null!=b?b.commitMessage:null)}),e)});"none"==DrawioFile.SYNC?this.showCopyDialog(a,e,k):this.invalidChecksum?this.showRefreshDialog(a,e,this.getErrorMessage(b)):c?this.showConflictDialog(k,f):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(a,
 e)}),this.getErrorMessage(b))};DrawioFile.prototype.getErrorMessage=function(b){return null!=b?null!=b.error?b.error.message:b.message:null};
 DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(b){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(b){this.handleFileError(b)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()};
-DrawioFile.prototype.fileSaved=function(b,c,a,e){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=b,this.shadowPages=null,null!=a&&a()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(b).documentElement),c,a,e,b)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=e&&e(k);try{this.errorReportsEnabled&&this.sendErrorReport("Error in fileSaved",null,k)}catch(f){}}};
+DrawioFile.prototype.fileSaved=function(b,c,a,e){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=b,this.shadowPages=null,null!=a&&a()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(b).documentElement),c,a,e,b)}catch(l){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=e&&e(l);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,l);else{var k=this.getCurrentUser(),f=null!=k?k.id:
+"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),f,l)}}catch(p){}}};
 DrawioFile.prototype.autosave=function(b,c,a,e){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());b=(new Date).getTime()-this.lastAutosave<c?b:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var b=this.isAutosaveRevision();b&&(this.lastAutosaveRevision=(new Date).getTime());this.save(b,mxUtils.bind(this,function(b){this.autosaveCompleted();
 null!=a&&a(b)}),mxUtils.bind(this,function(b){null!=e&&e(b)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=a&&a(null)}),b);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
 DrawioFile.prototype.isAutosaveRevision=function(){var b=(new Date).getTime();return null==this.lastAutosaveRevision||b-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))};
@@ -7492,18 +7501,18 @@ StorageLibrary.prototype.isRenamable=function(b,c,a){return".scratchpad"!=this.t
  mxClient.IS_IOS || */
 var StorageDialog=function(b,c,a){function e(m,t,n,x,z,v){function e(){mxEvent.addListener(y,"click",null!=v?v:function(){n!=App.MODE_GOOGLE||b.isDriveDomain()?n==App.MODE_GOOGLE&&b.spinner.spin(document.body,mxResources.get("authorizing"))?b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();b.setMode(n,u.checked);c()})):n==App.MODE_ONEDRIVE&&b.spinner.spin(document.body,mxResources.get("authorizing"))?b.oneDrive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();b.setMode(n,u.checked);
 c()})):(b.setMode(n,u.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}var y=document.createElement("a");y.style.overflow="hidden";y.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";y.className="geBaseButton";y.style.boxSizing="border-box";y.style.fontSize="11px";y.style.position="relative";y.style.margin="4px";y.style.padding="8px 10px 12px 10px";y.style.width="88px";y.style.height="100px";y.style.whiteSpace="nowrap";y.setAttribute("title",t);mxClient.IS_QUIRKS&&
-(y.style.cssFloat="left",y.style.zoom="1");var A=document.createElement("div");A.style.textOverflow="ellipsis";A.style.overflow="hidden";if(null!=m){var f=document.createElement("img");f.setAttribute("src",m);f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.width="60px";f.style.height="60px";f.style.paddingBottom="6px";y.appendChild(f)}else A.style.paddingTop="5px",A.style.whiteSpace="normal",mxClient.IS_IOS?(y.style.padding="0px 10px 20px 10px",y.style.top="6px"):mxClient.IS_FF&&
-(A.style.paddingTop="0px",A.style.marginTop="-2px");y.appendChild(A);mxUtils.write(A,t);if(null!=z)for(m=0;m<z.length;m++)mxUtils.br(A),mxUtils.write(A,z[m]);if(null!=x&&null==b[x]){f.style.visibility="hidden";mxUtils.setOpacity(A,10);var k=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});k.spin(y);var B=window.setTimeout(function(){null==b[x]&&(k.stop(),y.style.display="none")},3E4);b.addListener("clientLoaded",
-mxUtils.bind(this,function(a,d){null!=b[x]&&d.getProperty("client")==b[x]&&(window.clearTimeout(B),mxUtils.setOpacity(A,100),f.style.visibility="",k.stop(),e(),"drive"==x&&null!=g.parentNode&&g.parentNode.removeChild(g))}))}else e();p.appendChild(y);++d>=a&&(mxUtils.br(p),d=0)}a=null!=a?a:2;var k=document.createElement("div");k.style.textAlign="center";k.style.whiteSpace="nowrap";k.style.paddingTop="0px";k.style.paddingBottom="20px";var f=b.addLanguageMenu(k,!0);null!=f&&(f.style.bottom=parseInt("28px")-
+(y.style.cssFloat="left",y.style.zoom="1");var B=document.createElement("div");B.style.textOverflow="ellipsis";B.style.overflow="hidden";if(null!=m){var f=document.createElement("img");f.setAttribute("src",m);f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.width="60px";f.style.height="60px";f.style.paddingBottom="6px";y.appendChild(f)}else B.style.paddingTop="5px",B.style.whiteSpace="normal",mxClient.IS_IOS?(y.style.padding="0px 10px 20px 10px",y.style.top="6px"):mxClient.IS_FF&&
+(B.style.paddingTop="0px",B.style.marginTop="-2px");y.appendChild(B);mxUtils.write(B,t);if(null!=z)for(m=0;m<z.length;m++)mxUtils.br(B),mxUtils.write(B,z[m]);if(null!=x&&null==b[x]){f.style.visibility="hidden";mxUtils.setOpacity(B,10);var k=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});k.spin(y);var A=window.setTimeout(function(){null==b[x]&&(k.stop(),y.style.display="none")},3E4);b.addListener("clientLoaded",
+mxUtils.bind(this,function(a,d){null!=b[x]&&d.getProperty("client")==b[x]&&(window.clearTimeout(A),mxUtils.setOpacity(B,100),f.style.visibility="",k.stop(),e(),"drive"==x&&null!=g.parentNode&&g.parentNode.removeChild(g))}))}else e();q.appendChild(y);++d>=a&&(mxUtils.br(q),d=0)}a=null!=a?a:2;var k=document.createElement("div");k.style.textAlign="center";k.style.whiteSpace="nowrap";k.style.paddingTop="0px";k.style.paddingBottom="20px";var f=b.addLanguageMenu(k,!0);null!=f&&(f.style.bottom=parseInt("28px")-
 3+"px");if(!b.isOffline()&&1<b.getServiceCount()){f=document.createElement("a");f.setAttribute("href","https://about.draw.io/support/");f.setAttribute("title",mxResources.get("help"));f.setAttribute("target","_blank");f.style.position="absolute";f.style.textDecoration="none";f.style.cursor="pointer";f.style.fontSize="12px";f.style.bottom="28px";f.style.left="26px";f.style.color="gray";var l=document.createElement("img");mxUtils.setOpacity(l,50);l.style.height="16px";l.style.width="16px";l.setAttribute("border",
-"0");l.setAttribute("valign","bottom");l.setAttribute("src",Editor.helpImage);l.style.marginRight="2px";f.appendChild(l);mxUtils.write(f,mxResources.get("help"));k.appendChild(f)}var q=document.createElement("div");q.style.position="absolute";q.style.cursor="pointer";q.style.fontSize="12px";q.style.bottom="28px";q.style.color="gray";mxUtils.write(q,mxResources.get("decideLater"));b.isOfflineApp()?q.style.right="20px":(mxUtils.setPrefixedStyle(q.style,"transform","translate(-50%,0)"),q.style.left=
-"50%");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)q.style.marginLeft=-Math.round(q.clientWidth/2)+"px"};k.appendChild(q);mxEvent.addListener(q,"click",function(){b.hideDialog();var a=Editor.useLocalStorage;b.createFile(b.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=a});var p=document.createElement("div");mxClient.IS_QUIRKS&&(p.style.whiteSpace="nowrap",p.style.cssFloat="left");p.style.border="1px solid #d3d3d3";p.style.borderWidth="1px 0px 1px 0px";
-p.style.padding="12px 0px 12px 0px";var u=document.createElement("input");u.setAttribute("type","checkbox");u.setAttribute("checked","checked");u.defaultChecked=!0;var d=0,g=document.createElement("p"),f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.paddingTop="4px";f.style.paddingBottom="16px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("saveDiagramsTo")+":");k.appendChild(f);"function"===typeof window.DriveClient&&e(IMAGE_PATH+"/google-drive-logo.svg",
-mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&e(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");e(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||e(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);k.appendChild(p);f=document.createElement("p");f.style.marginTop="12px";f.style.marginBottom=
+"0");l.setAttribute("valign","bottom");l.setAttribute("src",Editor.helpImage);l.style.marginRight="2px";f.appendChild(l);mxUtils.write(f,mxResources.get("help"));k.appendChild(f)}var p=document.createElement("div");p.style.position="absolute";p.style.cursor="pointer";p.style.fontSize="12px";p.style.bottom="28px";p.style.color="gray";mxUtils.write(p,mxResources.get("decideLater"));b.isOfflineApp()?p.style.right="20px":(mxUtils.setPrefixedStyle(p.style,"transform","translate(-50%,0)"),p.style.left=
+"50%");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)p.style.marginLeft=-Math.round(p.clientWidth/2)+"px"};k.appendChild(p);mxEvent.addListener(p,"click",function(){b.hideDialog();var a=Editor.useLocalStorage;b.createFile(b.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=a});var q=document.createElement("div");mxClient.IS_QUIRKS&&(q.style.whiteSpace="nowrap",q.style.cssFloat="left");q.style.border="1px solid #d3d3d3";q.style.borderWidth="1px 0px 1px 0px";
+q.style.padding="12px 0px 12px 0px";var u=document.createElement("input");u.setAttribute("type","checkbox");u.setAttribute("checked","checked");u.defaultChecked=!0;var d=0,g=document.createElement("p"),f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.paddingTop="4px";f.style.paddingBottom="16px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("saveDiagramsTo")+":");k.appendChild(f);"function"===typeof window.DriveClient&&e(IMAGE_PATH+"/google-drive-logo.svg",
+mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&e(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");e(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||e(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);k.appendChild(q);f=document.createElement("p");f.style.marginTop="12px";f.style.marginBottom=
 "6px";f.appendChild(u);l=document.createElement("span");l.style.color="gray";l.style.fontSize="12px";mxUtils.write(l," "+mxResources.get("rememberThisSetting"));f.appendChild(l);mxUtils.br(f);var m=b.getRecent();if(null!=m&&0<m.length){var v=document.createElement("select");v.style.marginTop="8px";v.style.width="140px";var t=document.createElement("option");t.setAttribute("value","");t.setAttribute("selected","selected");t.style.textAlign="center";mxUtils.write(t,mxResources.get("openRecent")+"...");
-v.appendChild(t);for(t=0;t<m.length;t++)(function(b){var a=b.mode;a==App.MODE_GOOGLE?a="googleDrive":a==App.MODE_ONEDRIVE&&(a="oneDrive");var d=document.createElement("option");d.setAttribute("value",b.id);mxUtils.write(d,b.title+" ("+mxResources.get(a)+")");v.appendChild(d)})(m[t]);f.appendChild(v);mxEvent.addListener(v,"change",function(a){""!=v.value&&b.loadFile(v.value)})}else f.style.marginTop="20px",p.style.padding="30px 0px 26px 0px";!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11||(m=
+v.appendChild(t);for(t=0;t<m.length;t++)(function(b){var a=b.mode;a==App.MODE_GOOGLE?a="googleDrive":a==App.MODE_ONEDRIVE&&(a="oneDrive");var d=document.createElement("option");d.setAttribute("value",b.id);mxUtils.write(d,b.title+" ("+mxResources.get(a)+")");v.appendChild(d)})(m[t]);f.appendChild(v);mxEvent.addListener(v,"change",function(a){""!=v.value&&b.loadFile(v.value)})}else f.style.marginTop="20px",q.style.padding="30px 0px 26px 0px";!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11||(m=
 document.createElement("div"),m.style.cursor="pointer",m.style.padding="18px 0px 6px 0px",m.style.fontSize="12px",m.style.color="gray",mxUtils.write(m,mxResources.get("import")+": "+mxResources.get("gliffy")+", "+mxResources.get("formatVssx")+", "+mxResources.get("formatVsdx")+", "+mxResources.get("lucidchart")+"..."),mxEvent.addListener(m,"click",function(){var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(){null!=a.files&&(b.hideDialog(),
-b.openFiles(a.files,!0))});a.click()}),f.appendChild(m),p.style.paddingBottom="4px");p.appendChild(f);mxEvent.addListener(l,"click",function(b){u.checked=!u.checked;mxEvent.consume(b)});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<=document.documentMode)&&window.setTimeout(function(){null==b.drive&&(g.style.padding="8px",g.style.fontSize="9pt",g.style.marginTop="-14px",g.innerHTML='<a style="background-color:#dcdcdc;padding:5px;color:black;text-decoration:none;" href="https://plus.google.com/u/0/+DrawIo1/posts/1HTrfsb5wDN" target="_blank"><img border="0" src="'+
+b.openFiles(a.files,!0))});a.click()}),f.appendChild(m),q.style.paddingBottom="4px");q.appendChild(f);mxEvent.addListener(l,"click",function(b){u.checked=!u.checked;mxEvent.consume(b)});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<=document.documentMode)&&window.setTimeout(function(){null==b.drive&&(g.style.padding="8px",g.style.fontSize="9pt",g.style.marginTop="-14px",g.innerHTML='<a style="background-color:#dcdcdc;padding:5px;color:black;text-decoration:none;" href="https://plus.google.com/u/0/+DrawIo1/posts/1HTrfsb5wDN" target="_blank"><img border="0" src="'+
 mxGraph.prototype.warningImage.src+'" align="top"> '+mxResources.get("googleDriveMissingClickHere")+"</a>",k.appendChild(g))},5E3);this.container=k},SplashDialog=function(b){var c=document.createElement("div");c.style.textAlign="center";var a=b.addLanguageMenu(c,!0);null!=a&&(a.style.bottom="19px");a=null;a=b.getServiceCount();if(!b.isOffline()&&1<a){a=document.createElement("a");a.setAttribute("href","https://about.draw.io/support/");a.setAttribute("title",mxResources.get("help"));a.setAttribute("target",
 "_blank");a.style.position="absolute";a.style.fontSize="12px";a.style.textDecoration="none";a.style.cursor="pointer";a.style.bottom="22px";a.style.left="26px";a.style.color="gray";var e=document.createElement("img");mxUtils.setOpacity(e,50);e.style.height="16px";e.style.width="16px";e.setAttribute("border","0");e.setAttribute("valign","bottom");e.setAttribute("src",Editor.helpImage);e.style.marginRight="2px";a.appendChild(e);mxUtils.write(a,mxResources.get("help"));c.appendChild(a)}a=document.createElement("p");
 a.style.fontSize="16pt";a.style.padding="0px";a.style.paddingTop="2px";a.style.margin="0px";a.style.color="gray";e=document.createElement("img");e.setAttribute("border","0");e.setAttribute("align","absmiddle");e.style.width="40px";e.style.height="40px";e.style.marginRight="12px";e.style.paddingBottom="4px";var k="";b.mode==App.MODE_GOOGLE?(e.src=IMAGE_PATH+"/google-drive-logo.svg",k=mxResources.get("googleDrive")):b.mode==App.MODE_DROPBOX?(e.src=IMAGE_PATH+"/dropbox-logo.svg",k=mxResources.get("dropbox")):
@@ -7514,264 +7523,264 @@ f.appendChild(l);b.mode==App.MODE_GOOGLE?mxResources.get("googleDrive"):b.mode==
 c.setAttribute("href","javascript:void(0)");c.style.display="inline-block";c.style.marginTop="6px";mxUtils.write(c,mxResources.get("signOut"));l.style.marginBottom="16px";f.style.paddingBottom="18px";mxEvent.addListener(c,"click",function(){b.confirm(mxResources.get("areYouSure"),function(){a()})});f.appendChild(c)},a=null!=b.drive?b.drive.getUser():null,b.mode==App.MODE_GOOGLE&&null!=a?(l.style.marginBottom="24px",e=document.createElement("a"),e.setAttribute("href","javascript:void(0)"),e.style.display=
 "inline-block",e.style.marginTop="6px",mxUtils.write(e,mxResources.get("changeUser")+" ("+a.displayName+")"),l.style.marginBottom="16px",f.style.paddingBottom="18px",mxEvent.addListener(e,"click",function(){b.hideDialog();b.drive.clearUserId();b.drive.setUser(null);gapi.auth.signOut();b.setMode(App.MODE_GOOGLE);b.hideDialog();b.showSplash();b.drive.authorize(!1,mxUtils.bind(this,mxUtils.bind(this,function(){b.hideDialog();b.showSplash()})),mxUtils.bind(this,function(a){b.handleError(a,null,function(){b.hideDialog();
 b.showSplash()})}))}),f.appendChild(e)):b.mode==App.MODE_ONEDRIVE&&null!=b.oneDrive?e(function(){b.oneDrive.logout()}):b.mode==App.MODE_GITHUB&&null!=b.gitHub?e(function(){b.gitHub.logout();b.openLink("https://www.github.com/logout")}):b.mode==App.MODE_TRELLO&&null!=b.trello?b.trello.isAuthorized()&&e(function(){b.trello.logout()}):b.mode==App.MODE_DROPBOX&&null!=b.dropbox&&e(function(){b.dropbox.logout();b.openLink("https://www.dropbox.com/logout")}),mxUtils.br(f),e=document.createElement("a"),e.setAttribute("href",
-"javascript:void(0)"),e.style.display="inline-block",e.style.marginTop="8px",mxUtils.write(e,mxResources.get("changeStorage")),mxEvent.addListener(e,"click",function(){b.hideDialog(!1);b.setMode(null);b.clearMode();b.showSplash(!0)}),f.appendChild(e));c.appendChild(f);this.container=c},ConfirmDialog=function(b,c,a,e,k,f,l,q,p){var u=document.createElement("div");u.style.textAlign="center";var d=document.createElement("div");d.style.padding="6px";d.style.overflow="auto";d.style.maxHeight="44px";mxClient.IS_QUIRKS&&
-(d.style.height="60px");mxUtils.write(d,c);u.appendChild(d);d=document.createElement("div");d.style.textAlign="center";d.style.whiteSpace="nowrap";var g=document.createElement("input");g.setAttribute("type","checkbox");f=mxUtils.button(f||mxResources.get("cancel"),function(){b.hideDialog();null!=e&&e(g.checked)});f.className="geBtn";null!=q&&(f.innerHTML=q+"<br>"+f.innerHTML,f.style.paddingBottom="8px",f.style.paddingTop="8px",f.style.height="auto",f.style.width="40%");b.editor.cancelFirst&&d.appendChild(f);
-var m=mxUtils.button(k||mxResources.get("ok"),function(){b.hideDialog();null!=a&&a(g.checked)});d.appendChild(m);null!=l?(m.innerHTML=l+"<br>"+m.innerHTML+"<br>",m.style.paddingBottom="8px",m.style.paddingTop="8px",m.style.height="auto",m.className="geBtn",m.style.width="40%"):m.className="geBtn gePrimaryBtn";b.editor.cancelFirst||d.appendChild(f);u.appendChild(d);p?(d.style.marginTop="10px",d=document.createElement("p"),d.style.marginTop="20px",d.appendChild(g),k=document.createElement("span"),mxUtils.write(k,
+"javascript:void(0)"),e.style.display="inline-block",e.style.marginTop="8px",mxUtils.write(e,mxResources.get("changeStorage")),mxEvent.addListener(e,"click",function(){b.hideDialog(!1);b.setMode(null);b.clearMode();b.showSplash(!0)}),f.appendChild(e));c.appendChild(f);this.container=c},ConfirmDialog=function(b,c,a,e,k,f,l,p,q){var u=document.createElement("div");u.style.textAlign="center";var d=document.createElement("div");d.style.padding="6px";d.style.overflow="auto";d.style.maxHeight="44px";mxClient.IS_QUIRKS&&
+(d.style.height="60px");mxUtils.write(d,c);u.appendChild(d);d=document.createElement("div");d.style.textAlign="center";d.style.whiteSpace="nowrap";var g=document.createElement("input");g.setAttribute("type","checkbox");f=mxUtils.button(f||mxResources.get("cancel"),function(){b.hideDialog();null!=e&&e(g.checked)});f.className="geBtn";null!=p&&(f.innerHTML=p+"<br>"+f.innerHTML,f.style.paddingBottom="8px",f.style.paddingTop="8px",f.style.height="auto",f.style.width="40%");b.editor.cancelFirst&&d.appendChild(f);
+var m=mxUtils.button(k||mxResources.get("ok"),function(){b.hideDialog();null!=a&&a(g.checked)});d.appendChild(m);null!=l?(m.innerHTML=l+"<br>"+m.innerHTML+"<br>",m.style.paddingBottom="8px",m.style.paddingTop="8px",m.style.height="auto",m.className="geBtn",m.style.width="40%"):m.className="geBtn gePrimaryBtn";b.editor.cancelFirst||d.appendChild(f);u.appendChild(d);q?(d.style.marginTop="10px",d=document.createElement("p"),d.style.marginTop="20px",d.appendChild(g),k=document.createElement("span"),mxUtils.write(k,
 " "+mxResources.get("rememberThisSetting")),d.appendChild(k),u.appendChild(d),mxEvent.addListener(k,"click",function(b){g.checked=!g.checked;mxEvent.consume(b)})):d.style.marginTop="16px";this.init=function(){m.focus()};this.container=u},EmbedDialog=function(b,c,a,e,k,f){e=document.createElement("div");var l=/^https?:\/\//.test(c)||/^mailto:\/\//.test(c);null!=f?mxUtils.write(e,f):mxUtils.write(e,mxResources.get(5E5>c.length?l?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(e);f=document.createElement("div");
-f.style.position="absolute";f.style.top="30px";f.style.right="30px";f.style.color="gray";mxUtils.write(f,b.formatFileSize(c.length));e.appendChild(f);var q=document.createElement("textarea");q.setAttribute("autocomplete","off");q.setAttribute("autocorrect","off");q.setAttribute("autocapitalize","off");q.setAttribute("spellcheck","false");q.style.marginTop="10px";q.style.resize="none";q.style.height="150px";q.style.width="440px";q.style.border="1px solid gray";q.value=mxResources.get("updatingDocument");
-e.appendChild(q);mxUtils.br(e);this.init=function(){window.setTimeout(function(){5E5>c.length?(q.value=c,q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)):(q.setAttribute("readonly","true"),q.value=c.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};f=document.createElement("div");f.style.position="absolute";f.style.bottom="36px";f.style.right="32px";var p=null;!EmbedDialog.showPreviewOption||
-mxClient.IS_CHROMEAPP&&!l||navigator.standalone||!(l||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(p=mxUtils.button(mxResources.get(5E5>c.length?"preview":"openInNewWindow"),function(){var d=5E5>c.length?q.value:c;if(null!=k)k(d);else if(l)try{var m=b.openLink(d);null!=m&&(null==a||0<a)&&window.setTimeout(mxUtils.bind(this,function(){null!=m&&null!=m.location.href&&m.location.href.substring(0,8)!=d.substring(0,8)&&(m.close(),b.handleError({message:mxResources.get("drawingTooLarge")}))}),
-a||500)}catch(t){b.handleError({message:t.message||mxResources.get("drawingTooLarge")})}else{var v=window.open(),v=null!=v?v.document:null;null!=v?(v.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+c+"</body></html>"),v.close()):b.handleError({message:mxResources.get("errorUpdatingPreview")})}}),p.className="geBtn",f.appendChild(p));if(!l||7500<c.length){var u=mxUtils.button(mxResources.get("download"),function(){b.hideDialog();
-b.saveData("embed.txt","txt",c,"text/plain")});u.className="geBtn";f.appendChild(u)}if(l&&(!b.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>c.length){var d=mxUtils.button("",function(){try{var a="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(q.value);b.openLink(a)}catch(m){b.handleError({message:m.message||mxResources.get("drawingTooLarge")})}}),u=document.createElement("img");u.setAttribute("src",Editor.facebookImage);u.setAttribute("width","18");u.setAttribute("height","18");u.setAttribute("border",
-"0");d.appendChild(u);d.setAttribute("title",mxResources.get("facebook")+" ("+b.formatFileSize(51200)+" max)");d.style.verticalAlign="bottom";d.style.paddingTop="4px";d.style.minWidth="46px";d.className="geBtn";f.appendChild(d)}7168>c.length&&(d=mxUtils.button("",function(){try{var a="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(q.value);b.openLink(a)}catch(m){b.handleError({message:m.message||mxResources.get("drawingTooLarge")})}}),
+f.style.position="absolute";f.style.top="30px";f.style.right="30px";f.style.color="gray";mxUtils.write(f,b.formatFileSize(c.length));e.appendChild(f);var p=document.createElement("textarea");p.setAttribute("autocomplete","off");p.setAttribute("autocorrect","off");p.setAttribute("autocapitalize","off");p.setAttribute("spellcheck","false");p.style.marginTop="10px";p.style.resize="none";p.style.height="150px";p.style.width="440px";p.style.border="1px solid gray";p.value=mxResources.get("updatingDocument");
+e.appendChild(p);mxUtils.br(e);this.init=function(){window.setTimeout(function(){5E5>c.length?(p.value=c,p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)):(p.setAttribute("readonly","true"),p.value=c.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};f=document.createElement("div");f.style.position="absolute";f.style.bottom="36px";f.style.right="32px";var q=null;!EmbedDialog.showPreviewOption||
+mxClient.IS_CHROMEAPP&&!l||navigator.standalone||!(l||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(q=mxUtils.button(mxResources.get(5E5>c.length?"preview":"openInNewWindow"),function(){var d=5E5>c.length?p.value:c;if(null!=k)k(d);else if(l)try{var m=b.openLink(d);null!=m&&(null==a||0<a)&&window.setTimeout(mxUtils.bind(this,function(){null!=m&&null!=m.location.href&&m.location.href.substring(0,8)!=d.substring(0,8)&&(m.close(),b.handleError({message:mxResources.get("drawingTooLarge")}))}),
+a||500)}catch(t){b.handleError({message:t.message||mxResources.get("drawingTooLarge")})}else{var v=window.open(),v=null!=v?v.document:null;null!=v?(v.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+c+"</body></html>"),v.close()):b.handleError({message:mxResources.get("errorUpdatingPreview")})}}),q.className="geBtn",f.appendChild(q));if(!l||7500<c.length){var u=mxUtils.button(mxResources.get("download"),function(){b.hideDialog();
+b.saveData("embed.txt","txt",c,"text/plain")});u.className="geBtn";f.appendChild(u)}if(l&&(!b.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>c.length){var d=mxUtils.button("",function(){try{var a="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(p.value);b.openLink(a)}catch(m){b.handleError({message:m.message||mxResources.get("drawingTooLarge")})}}),u=document.createElement("img");u.setAttribute("src",Editor.facebookImage);u.setAttribute("width","18");u.setAttribute("height","18");u.setAttribute("border",
+"0");d.appendChild(u);d.setAttribute("title",mxResources.get("facebook")+" ("+b.formatFileSize(51200)+" max)");d.style.verticalAlign="bottom";d.style.paddingTop="4px";d.style.minWidth="46px";d.className="geBtn";f.appendChild(d)}7168>c.length&&(d=mxUtils.button("",function(){try{var a="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(p.value);b.openLink(a)}catch(m){b.handleError({message:m.message||mxResources.get("drawingTooLarge")})}}),
 u=document.createElement("img"),u.setAttribute("src",Editor.tweetImage),u.setAttribute("width","18"),u.setAttribute("height","18"),u.setAttribute("border","0"),u.style.marginBottom="5px",d.appendChild(u),d.setAttribute("title",mxResources.get("twitter")+" ("+b.formatFileSize(7168)+" max)"),d.style.verticalAlign="bottom",d.style.paddingTop="4px",d.style.minWidth="46px",d.className="geBtn",f.appendChild(d))}u=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});f.appendChild(u);d=mxUtils.button(mxResources.get("copy"),
-function(){q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");b.alert(mxResources.get("copiedToClipboard"))});5E5>c.length?mxClient.IS_SF||null!=document.documentMode?u.className="geBtn gePrimaryBtn":(f.appendChild(d),d.className="geBtn gePrimaryBtn",u.className="geBtn"):(f.appendChild(p),u.className="geBtn",p.className="geBtn gePrimaryBtn");e.appendChild(f);this.container=e};
+function(){p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");b.alert(mxResources.get("copiedToClipboard"))});5E5>c.length?mxClient.IS_SF||null!=document.documentMode?u.className="geBtn gePrimaryBtn":(f.appendChild(d),d.className="geBtn gePrimaryBtn",u.className="geBtn"):(f.appendChild(q),u.className="geBtn",q.className="geBtn gePrimaryBtn");e.appendChild(f);this.container=e};
 EmbedDialog.showPreviewOption=!0;
-var GoogleSitesDialog=function(b,c){function a(){var b=null!=E&&null!=E.getTitle()?E.getTitle():this.defaultFilename;if(A.checked&&""!=m.value){var a="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(m.value));null!=b&&(a+="&title="+encodeURIComponent(b));0<F.length&&(a+="&s="+F);""!=v.value&&"0"!=v.value&&(a+="&border="+v.value);""!=g.value&&(a+="&height="+g.value);a+="&pan="+(t.checked?"1":"0");a+="&zoom="+(y.checked?"1":"0");a+="&fit="+(z.checked?"1":"0");
-a+="&resize="+(x.checked?"1":"0");a+="&x0="+Number(d.value);a+="&y0="+p;k.mathEnabled&&(a+="&math=1");n.checked?a+="&edit=_blank":B.checked&&(a+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));u.value=a}else E.constructor==DriveFile||E.constructor==DropboxFile?(a="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=m.value?a+=encodeURIComponent(mxUtils.htmlEntities(m.value))+"&type=3":(a+=E.getHash().substring(1),a=E.constructor==DropboxFile?a+"&type=2":a+"&type=1"),null!=
-b&&(a+="&title="+encodeURIComponent(b)),""!=g.value&&(b=parseInt(g.value)+parseInt(d.value),a+="&height="+b),u.value=a):u.value=""}var e=document.createElement("div"),k=b.editor.graph,f=k.getGraphBounds(),l=k.view.scale,q=Math.floor(f.x/l-k.view.translate.x),p=Math.floor(f.y/l-k.view.translate.y);mxUtils.write(e,mxResources.get("googleGadget")+":");mxUtils.br(e);var u=document.createElement("input");u.setAttribute("type","text");u.style.marginBottom="8px";u.style.marginTop="2px";u.style.width="410px";
-e.appendChild(u);mxUtils.br(e);this.init=function(){u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)};mxUtils.write(e,mxResources.get("top")+":");var d=document.createElement("input");d.setAttribute("type","text");d.setAttribute("size","4");d.style.marginRight="16px";d.style.marginLeft="4px";d.value=q;e.appendChild(d);mxUtils.write(e,mxResources.get("height")+":");var g=document.createElement("input");g.setAttribute("type",
+var GoogleSitesDialog=function(b,c){function a(){var b=null!=E&&null!=E.getTitle()?E.getTitle():this.defaultFilename;if(B.checked&&""!=m.value){var a="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(m.value));null!=b&&(a+="&title="+encodeURIComponent(b));0<F.length&&(a+="&s="+F);""!=v.value&&"0"!=v.value&&(a+="&border="+v.value);""!=g.value&&(a+="&height="+g.value);a+="&pan="+(t.checked?"1":"0");a+="&zoom="+(y.checked?"1":"0");a+="&fit="+(z.checked?"1":"0");
+a+="&resize="+(x.checked?"1":"0");a+="&x0="+Number(d.value);a+="&y0="+q;k.mathEnabled&&(a+="&math=1");n.checked?a+="&edit=_blank":A.checked&&(a+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));u.value=a}else E.constructor==DriveFile||E.constructor==DropboxFile?(a="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=m.value?a+=encodeURIComponent(mxUtils.htmlEntities(m.value))+"&type=3":(a+=E.getHash().substring(1),a=E.constructor==DropboxFile?a+"&type=2":a+"&type=1"),null!=
+b&&(a+="&title="+encodeURIComponent(b)),""!=g.value&&(b=parseInt(g.value)+parseInt(d.value),a+="&height="+b),u.value=a):u.value=""}var e=document.createElement("div"),k=b.editor.graph,f=k.getGraphBounds(),l=k.view.scale,p=Math.floor(f.x/l-k.view.translate.x),q=Math.floor(f.y/l-k.view.translate.y);mxUtils.write(e,mxResources.get("googleGadget")+":");mxUtils.br(e);var u=document.createElement("input");u.setAttribute("type","text");u.style.marginBottom="8px";u.style.marginTop="2px";u.style.width="410px";
+e.appendChild(u);mxUtils.br(e);this.init=function(){u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)};mxUtils.write(e,mxResources.get("top")+":");var d=document.createElement("input");d.setAttribute("type","text");d.setAttribute("size","4");d.style.marginRight="16px";d.style.marginLeft="4px";d.value=p;e.appendChild(d);mxUtils.write(e,mxResources.get("height")+":");var g=document.createElement("input");g.setAttribute("type",
 "text");g.setAttribute("size","4");g.style.marginLeft="4px";g.value=Math.ceil(f.height/l);e.appendChild(g);mxUtils.br(e);f=document.createElement("hr");f.setAttribute("size","1");f.style.marginBottom="16px";f.style.marginTop="16px";e.appendChild(f);mxUtils.write(e,mxResources.get("publicDiagramUrl")+":");mxUtils.br(e);var m=document.createElement("input");m.setAttribute("type","text");m.setAttribute("size","28");m.style.marginBottom="8px";m.style.marginTop="2px";m.style.width="410px";m.value=c||"";
 e.appendChild(m);mxUtils.br(e);mxUtils.write(e,mxResources.get("borderWidth")+":");var v=document.createElement("input");v.setAttribute("type","text");v.setAttribute("size","3");v.style.marginBottom="8px";v.style.marginLeft="4px";v.value="0";e.appendChild(v);mxUtils.br(e);var t=document.createElement("input");t.setAttribute("type","checkbox");t.setAttribute("checked","checked");t.defaultChecked=!0;t.style.marginLeft="16px";e.appendChild(t);mxUtils.write(e,mxResources.get("pan")+" ");var y=document.createElement("input");
-y.setAttribute("type","checkbox");y.setAttribute("checked","checked");y.defaultChecked=!0;y.style.marginLeft="8px";e.appendChild(y);mxUtils.write(e,mxResources.get("zoom")+" ");var B=document.createElement("input");B.setAttribute("type","checkbox");B.style.marginLeft="8px";B.setAttribute("title",window.location.href);e.appendChild(B);mxUtils.write(e,mxResources.get("edit")+" ");var n=document.createElement("input");n.setAttribute("type","checkbox");n.style.marginLeft="8px";e.appendChild(n);mxUtils.write(e,
-mxResources.get("asNew")+" ");mxUtils.br(e);var x=document.createElement("input");x.setAttribute("type","checkbox");x.setAttribute("checked","checked");x.defaultChecked=!0;x.style.marginLeft="16px";e.appendChild(x);mxUtils.write(e,mxResources.get("resize")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";e.appendChild(z);mxUtils.write(e,mxResources.get("fit")+" ");var A=document.createElement("input");A.setAttribute("type","checkbox");A.style.marginLeft=
-"8px";e.appendChild(A);mxUtils.write(e,mxResources.get("embed")+" ");var F=b.getBasenames().join(";"),E=b.getCurrentFile();mxEvent.addListener(t,"change",a);mxEvent.addListener(y,"change",a);mxEvent.addListener(x,"change",a);mxEvent.addListener(z,"change",a);mxEvent.addListener(B,"change",a);mxEvent.addListener(n,"change",a);mxEvent.addListener(A,"change",a);mxEvent.addListener(g,"change",a);mxEvent.addListener(d,"change",a);mxEvent.addListener(v,"change",a);mxEvent.addListener(m,"change",a);a();
+y.setAttribute("type","checkbox");y.setAttribute("checked","checked");y.defaultChecked=!0;y.style.marginLeft="8px";e.appendChild(y);mxUtils.write(e,mxResources.get("zoom")+" ");var A=document.createElement("input");A.setAttribute("type","checkbox");A.style.marginLeft="8px";A.setAttribute("title",window.location.href);e.appendChild(A);mxUtils.write(e,mxResources.get("edit")+" ");var n=document.createElement("input");n.setAttribute("type","checkbox");n.style.marginLeft="8px";e.appendChild(n);mxUtils.write(e,
+mxResources.get("asNew")+" ");mxUtils.br(e);var x=document.createElement("input");x.setAttribute("type","checkbox");x.setAttribute("checked","checked");x.defaultChecked=!0;x.style.marginLeft="16px";e.appendChild(x);mxUtils.write(e,mxResources.get("resize")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";e.appendChild(z);mxUtils.write(e,mxResources.get("fit")+" ");var B=document.createElement("input");B.setAttribute("type","checkbox");B.style.marginLeft=
+"8px";e.appendChild(B);mxUtils.write(e,mxResources.get("embed")+" ");var F=b.getBasenames().join(";"),E=b.getCurrentFile();mxEvent.addListener(t,"change",a);mxEvent.addListener(y,"change",a);mxEvent.addListener(x,"change",a);mxEvent.addListener(z,"change",a);mxEvent.addListener(A,"change",a);mxEvent.addListener(n,"change",a);mxEvent.addListener(B,"change",a);mxEvent.addListener(g,"change",a);mxEvent.addListener(d,"change",a);mxEvent.addListener(v,"change",a);mxEvent.addListener(m,"change",a);a();
 mxEvent.addListener(u,"click",function(){u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)});f=document.createElement("div");f.style.paddingTop="12px";f.style.textAlign="right";l=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});l.className="geBtn gePrimaryBtn";f.appendChild(l);e.appendChild(f);this.container=e},CreateGraphDialog=function(b,c,a){var e=document.createElement("div");e.style.textAlign=
 "right";this.init=function(){var c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.width="100%";c.style.height="360px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);e.appendChild(c);var f=new Graph(c);f.setCellsCloneable(!0);f.setPanning(!0);f.setAllowDanglingEdges(!1);f.connectionHandler.select=!1;f.view.setTranslate(20,20);f.border=20;f.panningHandler.useLeftButtonForPanning=!0;var l="curved=1;";f.cellRenderer.installCellOverlayListeners=
 function(b,a,d){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(d.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(d){a.fireEvent(new mxEventObject("pointerdown","event",d,"state",b))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(d.node,"touchstart",function(d){a.fireEvent(new mxEventObject("pointerdown","event",d,"state",b))})};f.getAllConnectionConstraints=function(){return null};f.connectionHandler.marker.highlight.keepOnTop=
-!1;f.connectionHandler.createEdgeState=function(b){b=f.createEdge(null,null,null,null,null,l);return new mxCellState(this.graph.view,b,this.graph.getCellStyle(b))};var q=f.getDefaultParent(),p=mxUtils.bind(this,function(b){var a=new mxCellOverlay(this.connectImage,"Add outgoing");a.cursor="hand";a.addListener(mxEvent.CLICK,function(a,d){f.connectionHandler.reset();f.clearSelection();var c=f.getCellGeometry(b),m;g(function(){m=f.insertVertex(q,null,"Entry",c.x,c.y,80,30,"rounded=1;");p(m);f.view.refresh(m);
-f.insertEdge(q,null,"",b,m,l)},function(){f.scrollCellToVisible(m)})});a.addListener("pointerdown",function(b,a){var d=a.getProperty("event"),g=a.getProperty("state");f.popupMenuHandler.hideMenu();f.stopEditing(!1);var c=mxUtils.convertPoint(f.container,mxEvent.getClientX(d),mxEvent.getClientY(d));f.connectionHandler.start(g,c.x,c.y);f.isMouseDown=!0;f.isMouseTrigger=mxEvent.isMouseEvent(d);mxEvent.consume(d)});f.addCellOverlay(b,a)});f.getModel().beginUpdate();var u;try{u=f.insertVertex(q,null,"Start",
-0,0,80,30,"ellipse"),p(u)}finally{f.getModel().endUpdate()}var d;"horizontalTree"==a?(d=new mxCompactTreeLayout(f),d.edgeRouting=!1,d.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==a?(d=new mxCompactTreeLayout(f,!1),d.edgeRouting=!1,d.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==a?(d=new mxRadialTreeLayout(f,!1),d.edgeRouting=!1,d.levelDistance=80):"verticalFlow"==a?d=new mxHierarchicalLayout(f,mxConstants.DIRECTION_NORTH):"horizontalFlow"==
+!1;f.connectionHandler.createEdgeState=function(b){b=f.createEdge(null,null,null,null,null,l);return new mxCellState(this.graph.view,b,this.graph.getCellStyle(b))};var p=f.getDefaultParent(),q=mxUtils.bind(this,function(b){var a=new mxCellOverlay(this.connectImage,"Add outgoing");a.cursor="hand";a.addListener(mxEvent.CLICK,function(a,d){f.connectionHandler.reset();f.clearSelection();var c=f.getCellGeometry(b),m;g(function(){m=f.insertVertex(p,null,"Entry",c.x,c.y,80,30,"rounded=1;");q(m);f.view.refresh(m);
+f.insertEdge(p,null,"",b,m,l)},function(){f.scrollCellToVisible(m)})});a.addListener("pointerdown",function(b,a){var d=a.getProperty("event"),g=a.getProperty("state");f.popupMenuHandler.hideMenu();f.stopEditing(!1);var c=mxUtils.convertPoint(f.container,mxEvent.getClientX(d),mxEvent.getClientY(d));f.connectionHandler.start(g,c.x,c.y);f.isMouseDown=!0;f.isMouseTrigger=mxEvent.isMouseEvent(d);mxEvent.consume(d)});f.addCellOverlay(b,a)});f.getModel().beginUpdate();var u;try{u=f.insertVertex(p,null,"Start",
+0,0,80,30,"ellipse"),q(u)}finally{f.getModel().endUpdate()}var d;"horizontalTree"==a?(d=new mxCompactTreeLayout(f),d.edgeRouting=!1,d.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==a?(d=new mxCompactTreeLayout(f,!1),d.edgeRouting=!1,d.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==a?(d=new mxRadialTreeLayout(f,!1),d.edgeRouting=!1,d.levelDistance=80):"verticalFlow"==a?d=new mxHierarchicalLayout(f,mxConstants.DIRECTION_NORTH):"horizontalFlow"==
 a?d=new mxHierarchicalLayout(f,mxConstants.DIRECTION_WEST):"organic"==a?(d=new mxFastOrganicLayout(f,!1),d.forceConstant=80):"circle"==a&&(d=new mxCircleLayout(f));if(null!=d){var g=function(b,a){f.getModel().beginUpdate();try{null!=b&&b(),d.execute(f.getDefaultParent(),u)}catch(x){throw x;}finally{var g=new mxMorphing(f);g.addListener(mxEvent.DONE,mxUtils.bind(this,function(){f.getModel().endUpdate();null!=a&&a()}));g.startAnimation()}},m=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect=
 function(b,a,d,c,t){m.apply(this,arguments);g()};f.resizeCell=function(){mxGraph.prototype.resizeCell.apply(this,arguments);g()};f.connectionHandler.addListener(mxEvent.CONNECT,function(){g()})}var v=mxUtils.button(mxResources.get("close"),function(){b.confirm(mxResources.get("areYouSure"),function(){null!=c.parentNode&&(f.destroy(),c.parentNode.removeChild(c));b.hideDialog()})});v.className="geBtn";b.editor.cancelFirst&&e.appendChild(v);var t=mxUtils.button(mxResources.get("insert"),function(){f.clearCellOverlays();
 var a=b.editor.graph.getFreeInsertPoint(),a=b.editor.graph.importCells(f.getModel().getChildren(f.getDefaultParent()),a.x,a.y),d=b.editor.graph.view,g=d.getBounds(a);g.x-=d.translate.x;g.y-=d.translate.y;b.editor.graph.scrollRectToVisible(g);b.editor.graph.setSelectionCells(a);null!=c.parentNode&&(f.destroy(),c.parentNode.removeChild(c));b.hideDialog()});e.appendChild(t);t.className="geBtn gePrimaryBtn";b.editor.cancelFirst||e.appendChild(v)};this.container=e};
 CreateGraphDialog.prototype.connectImage=new mxImage(mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjQ3OTk0QjMyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjQ3OTk0QjQyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjA0N0I2MjJENzExMUU1OEZBOEY0NUEyM0EyMUMzOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNDc5OTRCMjJENzIxMUU1OEZBOEY0NUEyM0EyMUMzOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjIf+MgAAATlSURBVHjanFZraFxFFD735u4ru3ls0yZG26ShgmJoKK1J2vhIYzBgRdtIURHyw1hQUH9IxIgI2h8iCEUF/1RRlNQYCsYfCTHVhiTtNolpZCEStqSC22xIsrs1bDfu7t37Gs/cO3Ozxs1DBw73zpk555vzmHNGgJ0NYatFgmNLYUHYUoHASMz5ijmgVLmxgfKCUiBxC4ACJAeSG8nb1dVVOTc3dyoSibwWDofPBIPBJzo7O8vpGtvjpDICGztxkciECpF2LS0tvZtOpwNkk5FKpcYXFxffwL1+JuPgllPj8nk1F6RoaGjoKCqZ5ApljZDZO4SMRA0SuG2QUJIQRV8HxMOM9vf3H0ZZH9Nhg20MMl2QkFwjIyNHWlpahtADnuUMwLcRHX5aNSBjCJYEsSSLUeLEbhGe3ytCmQtA1/XY+Pj46dbW1iDuyCJp9BC5ycBj4hoeHq5ra2sbw0Xn1ZgBZ+dVkA1Lc+6p0Ck2p0QS4Ox9EhwpEylYcmBg4LH29vYQLilIOt0u5FhDfevNZDI/u93uw6PLOrwTUtjxrbPYbhD42WgMrF8JmR894ICmCgnQjVe8Xu8pXEkzMJKbuo5oNPomBbm1ZsD7s2kwFA1JZ6QBUXWT1nmGNc/qoMgavDcrQzxjQGFh4aOYIJ0sFAXcEtui4uLiVjr5KpSBVFYDDZVrWUaKRRWSAYeK0fmKykgDXbVoNaPChRuyqdDv97czL5nXxQbq6empQmsaklkDBiNpSwFVrmr2P6UyicD5piI4f8wHh0oEm8/p4h8pyGiEWvVQd3e3nxtjAzU1NR2jP7NRBWQ8GbdEzzJAmc0V3RR4cI8Dvmwuhc8fKUFA0d6/ltHg5p+Kuaejo6OeY0jcNJ/PV00ZS0nFUoZRvvFS1bZFsKHCCQ2Pl8H0chY+C96B6ZUsrCQ1qKtwQVFRURW/QhIXMAzDPAZ6BgOr8tTa8dDxCmiYGApaJbJMxSzV+brE8pdgWkcpY5dbMF1AR9XH8/xu2ilef48bvn92n82ZwHh+8ssqTEXS9p7dHisiiURikd8PbpExNTU1UVNTA3V3Y7lC16n0gpB/NwpNcZjfa7dScC4Qh0kOQCwnlEgi3F/hMVl9fX0zvKrzSk2lfXjRhj0eT/2rvWG4+Pta3oJY7XfC3hInXAv/ldeFLx8shQ+eqQL0UAAz7ylkpej5eNZRVBWL6BU6ef14OYiY1oqyTtmsavr/5koaRucT1pzx+ZpL1+GV5nLutksUgIcmtwTRiuuVZXnU5XId7A2swJkfFsymRWC91hHg1Viw6x23+7vn9sPJ+j20BE1hCXqSWaNSQ8ScbknRZWxub1PGCw/fBV+c3AeijlUbY5bBjEqr9GuYZP4jP41WudGSC6erTRCqdGZm5i1WvXWeDHnbBCZGc2Nj4wBl/hZOwrmBBfgmlID1HmGJutHaF+tKoevp/XCgstDkjo2NtWKLuc6AVN4mNjY+s1XQxoenOoFuDPHGtnRbJj9ej5GvL0dI7+giuRyMk1giazc+DP6vgUDgOJVlOv7R+PJ12QIeL6SyeDz+Kfp8ZrNWjgDTsVjsQ7qXyTjztXJhm9ePxFLfMTg4eG9tbe1RTP9KFFYQfHliYmIS69kCC7jKYmKwxxD5P88tkVkqbPPcIps9t4T/+HjcuJ/s5BFJgf4WYABCtxGuxIZ90gAAAABJRU5ErkJggg==":
 IMAGE_PATH+"/handle-connect.png",26,26);
 var BackgroundImageDialog=function(b,c){var a=document.createElement("div");a.style.whiteSpace="nowrap";var e=document.createElement("h2");mxUtils.write(e,mxResources.get("backgroundImage"));e.style.marginTop="0px";a.appendChild(e);mxUtils.write(a,mxResources.get("image")+" "+mxResources.get("url")+":");mxUtils.br(a);var e=b.editor.graph.backgroundImage,k=document.createElement("input");k.setAttribute("type","text");k.style.marginTop="4px";k.style.marginBottom="4px";k.style.width="350px";k.value=
-null!=e?e.src:"";var f=!1,l=function(){f||""==k.value||b.isOffline()?(q.value="",p.value=""):b.loadImage(mxUtils.trim(k.value),function(b){q.value=b.width;p.value=b.height},function(){b.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));k.value="";q.value="";p.value=""})};this.init=function(){k.focus();if(Graph.fileSupport){k.setAttribute("placeholder",mxResources.get("dragImagesHere"));var d=a.parentNode,c=null;mxEvent.addListener(d,"dragleave",function(b){null!=
+null!=e?e.src:"";var f=!1,l=function(){f||""==k.value||b.isOffline()?(p.value="",q.value=""):b.loadImage(mxUtils.trim(k.value),function(b){p.value=b.width;q.value=b.height},function(){b.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));k.value="";p.value="";q.value=""})};this.init=function(){k.focus();if(Graph.fileSupport){k.setAttribute("placeholder",mxResources.get("dragImagesHere"));var d=a.parentNode,c=null;mxEvent.addListener(d,"dragleave",function(b){null!=
 c&&(c.parentNode.removeChild(c),c=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=b.highlightElement(d));a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<a.dataTransfer.files.length)b.importFiles(a.dataTransfer.files,0,0,b.maxBackgroundSize,function(b,a,d,g,c,m){k.value=b;l()},function(){},
-function(b){return"image/"==b.type.substring(0,6)},function(b){for(var a=0;a<b.length;a++)b[a]()},!0,b.maxBackgroundBytes,b.maxBackgroundBytes);else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var d=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&(k.value=decodeURIComponent(d),l())}a.stopPropagation();a.preventDefault()}),!1)}};a.appendChild(k);mxUtils.br(a);mxUtils.br(a);mxUtils.write(a,mxResources.get("width")+":");var q=document.createElement("input");
-q.setAttribute("type","text");q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="16px";q.value=null!=e?e.width:"";a.appendChild(q);mxUtils.write(a,mxResources.get("height")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="16px";p.value=null!=e?e.height:"";a.appendChild(p);e=mxUtils.button(mxResources.get("reset"),function(){k.value="";q.value="";p.value="";f=!1});mxEvent.addListener(e,"mousedown",
+function(b){return"image/"==b.type.substring(0,6)},function(b){for(var a=0;a<b.length;a++)b[a]()},!0,b.maxBackgroundBytes,b.maxBackgroundBytes);else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var d=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&(k.value=decodeURIComponent(d),l())}a.stopPropagation();a.preventDefault()}),!1)}};a.appendChild(k);mxUtils.br(a);mxUtils.br(a);mxUtils.write(a,mxResources.get("width")+":");var p=document.createElement("input");
+p.setAttribute("type","text");p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="16px";p.value=null!=e?e.width:"";a.appendChild(p);mxUtils.write(a,mxResources.get("height")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="16px";q.value=null!=e?e.height:"";a.appendChild(q);e=mxUtils.button(mxResources.get("reset"),function(){k.value="";p.value="";q.value="";f=!1});mxEvent.addListener(e,"mousedown",
 function(){f=!0});mxEvent.addListener(e,"touchstart",function(){f=!0});e.className="geBtn";e.width="100";a.appendChild(e);mxUtils.br(a);mxEvent.addListener(k,"change",l);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(k.value=b.url,l()));k.focus()};e=document.createElement("div");e.style.marginTop="40px";e.style.textAlign="right";var u=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});
 u.className="geBtn";b.editor.cancelFirst&&e.appendChild(u);if(!b.isOffline()&&"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top){var d=mxUtils.button(mxResources.get("search"),function(){if(null==b.imageSearchPicker){var a=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);b.imageSearchPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.imageSearchPicker.setVisible(!0)});
 d.className="geBtn";e.appendChild(d);null!=b.drive&&"1"==urlParams.photos&&(d=mxUtils.button(mxResources.get("googlePlus"),function(){b.spinner.spin(document.body,mxResources.get("authorizing"))&&b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();if(null==b.photoPicker){var a=gapi.auth.getToken().access_token,a=(new google.picker.PickerBuilder).setAppId(b.drive.appId).setLocale(mxLanguage).setOAuthToken(a).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD);
-b.photoPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.photoPicker.setVisible(!0)}))}),d.className="geBtn",e.appendChild(d))}d=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();c(""!=k.value?new mxImage(mxUtils.trim(k.value),q.value,p.value):null)});d.className="geBtn gePrimaryBtn";e.appendChild(d);b.editor.cancelFirst||e.appendChild(u);a.appendChild(e);this.container=a},ParseDialog=function(b,c,a){function e(a,d){var g=a.split("\n");if("plantUmlPng"==d||"plantUmlSvg"==
+b.photoPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.photoPicker.setVisible(!0)}))}),d.className="geBtn",e.appendChild(d))}d=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();c(""!=k.value?new mxImage(mxUtils.trim(k.value),p.value,q.value):null)});d.className="geBtn gePrimaryBtn";e.appendChild(d);b.editor.cancelFirst||e.appendChild(u);a.appendChild(e);this.container=a},ParseDialog=function(b,c,a){function e(a,d){var g=a.split("\n");if("plantUmlPng"==d||"plantUmlSvg"==
 d||"plantUmlTxt"==d){var g="plantUmlTxt"==d?PLANT_URL+"/txt/":"plantUmlPng"==d?PLANT_URL+"/png/":PLANT_URL+"/svg/",c=b.editor.graph;if(b.spinner.spin(document.body,mxResources.get("inserting"))){var m=function(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+b);b-=26;return 0==b?"-":1==b?"_":"?"},n=function(b,a,d){c1=b>>2;c2=(b&3)<<4|a>>4;c3=(a&15)<<2|d>>6;c4=d&63;r="";r+=m(c1&63);r+=m(c2&63);r+=m(c3&63);return r+=
 m(c4&63)},x=new XMLHttpRequest;x.open("GET",g+function(b){r="";for(k=0;k<b.length;k+=3)r=k+2==b.length?r+n(b.charCodeAt(k),b.charCodeAt(k+1),0):k+1==b.length?r+n(b.charCodeAt(k),0,0):r+n(b.charCodeAt(k),b.charCodeAt(k+1),b.charCodeAt(k+2));return r}(c.bytesToString(pako.deflateRaw(unescape(encodeURIComponent(a))))),!0);"plantUmlTxt"!=d&&(x.responseType="blob");x.onload=function(g){if(200<=this.status&&300>this.status)if("plantUmlTxt"==d)b.spinner.stop(),c.setSelectionCell(b.insertAsPreText(this.response,
 f.x,f.y)),c.scrollCellToVisible(c.getSelectionCell());else{var m=new FileReader;m.readAsDataURL(this.response);m.onloadend=function(d){var g=new Image;g.onload=function(){b.spinner.stop();var d=g.width,n=g.height;if(0==d&&0==n){var x=m.result,z=x.indexOf(","),x=decodeURIComponent(escape(atob(x.substring(z+1)))),x=mxUtils.parseXml(x).getElementsByTagName("svg");0<x.length&&(d=parseFloat(x[0].getAttribute("width")),n=parseFloat(x[0].getAttribute("height")))}c.getModel().beginUpdate();try{cell=c.insertVertex(null,
 null,a,f.x,f.y,d,n,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b.convertDataUri(m.result)+";")}finally{c.getModel().endUpdate()}c.setSelectionCell(cell);c.scrollCellToVisible(c.getSelectionCell())};g.src=m.result};m.onerror=function(a){b.handleError(a)}}else b.spinner.stop(),b.handleError(g)};x.onerror=function(a){b.handleError(a)};x.send()}}else if("table"==d){for(var z=null,e=[],v=0,k=0;k<g.length;k++)if(x=mxUtils.trim(g[k]),"create table"==x.substring(0,12).toLowerCase())x=
-mxUtils.trim(x.substring(12)),"("==x.charAt(x.length-1)&&(x=x.substring(0,x.lastIndexOf(" "))),z=new mxCell(x,new mxGeometry(v,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"),z.vertex=!0,e.push(z),x=b.editor.graph.getPreferredSizeForCell(q),null!=x&&(z.geometry.width=x.width+10);else if(null!=z&&")"==x.charAt(0))v+=z.geometry.width+
-40,z=null;else if("("!=x&&null!=z&&(x=x.substring(0,","==x.charAt(x.length-1)?x.length-1:x.length),"primary key"!=x.substring(0,11).toLowerCase())){var l=x.toLowerCase().indexOf("primary key"),x=x.replace(/primary key/i,""),q=new mxCell(x,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;");q.vertex=
-!0;x=sb.cloneCell(q,0<l?"PK":"");x.connectable=!1;x.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";x.geometry.width=30;x.geometry.height=26;q.insert(x);x=b.editor.graph.getPreferredSizeForCell(q);null!=x&&z.geometry.width<x.width+10&&(z.geometry.width=Math.min(220,x.width+10));z.insert(q);z.geometry.height+=26}0<e.length&&(c=b.editor.graph,g=c.view,
+mxUtils.trim(x.substring(12)),"("==x.charAt(x.length-1)&&(x=x.substring(0,x.lastIndexOf(" "))),z=new mxCell(x,new mxGeometry(v,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"),z.vertex=!0,e.push(z),x=b.editor.graph.getPreferredSizeForCell(p),null!=x&&(z.geometry.width=x.width+10);else if(null!=z&&")"==x.charAt(0))v+=z.geometry.width+
+40,z=null;else if("("!=x&&null!=z&&(x=x.substring(0,","==x.charAt(x.length-1)?x.length-1:x.length),"primary key"!=x.substring(0,11).toLowerCase())){var l=x.toLowerCase().indexOf("primary key"),x=x.replace(/primary key/i,""),p=new mxCell(x,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;");p.vertex=
+!0;x=sb.cloneCell(p,0<l?"PK":"");x.connectable=!1;x.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";x.geometry.width=30;x.geometry.height=26;p.insert(x);x=b.editor.graph.getPreferredSizeForCell(p);null!=x&&z.geometry.width<x.width+10&&(z.geometry.width=Math.min(220,x.width+10));z.insert(p);z.geometry.height+=26}0<e.length&&(c=b.editor.graph,g=c.view,
 x=c.getGraphBounds(),c.setSelectionCells(c.importCells(e,Math.ceil(Math.max(0,x.x/g.scale-g.translate.x)+4*c.gridSize),Math.ceil(Math.max(0,(x.y+x.height)/g.scale-g.translate.y)+4*c.gridSize))),c.scrollCellToVisible(c.getSelectionCell()))}else if("list"==d){if(0<g.length){c=b.editor.graph;z=new mxCell(g[0],new mxGeometry(0,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;");
-z.vertex=!0;x=c.getPreferredSizeForCell(z);null!=x&&z.geometry.width<x.width+10&&(z.geometry.width=x.width+10);q=[z];if(1<g.length)for(k=1;k<g.length;k++)"--"==g[k]?(x=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),x.vertex=!0,z.geometry.height+=x.geometry.height,z.insert(x),q.push(x)):0<g[k].length&&";"!=g[k].charAt(0)&&(v=new mxCell(g[k],
-new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),v.vertex=!0,x=c.getPreferredSizeForCell(v),null!=x&&v.geometry.width<x.width&&(v.geometry.width=x.width),z.geometry.width=Math.max(z.geometry.width,v.geometry.width),z.geometry.height+=v.geometry.height,z.insert(v),q.push(v));c.getModel().beginUpdate();try{z=c.importCells([z],f.x,f.y)[0],c.fireEvent(new mxEventObject("cellsInserted",
-"cells",[z].concat(z.children)))}finally{c.getModel().endUpdate()}c.setSelectionCell(z);c.scrollCellToVisible(c.getSelectionCell())}}else{for(var q=function(b){var a=p[b];null==a&&(a=new mxCell(b,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),a.vertex=!0,p[b]=a,e.push(a));return a},p={},e=[],k=0;k<g.length;k++)if(";"!=g[k].charAt(0)){var u=g[k].split("->");if(2<=u.length){var l=q(u[0]),I=q(u[u.length-1]),u=new mxCell(2<u.length?u[1]:"",new mxGeometry);u.edge=!0;l.insertEdge(u,!0);I.insertEdge(u,
+z.vertex=!0;x=c.getPreferredSizeForCell(z);null!=x&&z.geometry.width<x.width+10&&(z.geometry.width=x.width+10);p=[z];if(1<g.length)for(k=1;k<g.length;k++)"--"==g[k]?(x=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),x.vertex=!0,z.geometry.height+=x.geometry.height,z.insert(x),p.push(x)):0<g[k].length&&";"!=g[k].charAt(0)&&(v=new mxCell(g[k],
+new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),v.vertex=!0,x=c.getPreferredSizeForCell(v),null!=x&&v.geometry.width<x.width&&(v.geometry.width=x.width),z.geometry.width=Math.max(z.geometry.width,v.geometry.width),z.geometry.height+=v.geometry.height,z.insert(v),p.push(v));c.getModel().beginUpdate();try{z=c.importCells([z],f.x,f.y)[0],c.fireEvent(new mxEventObject("cellsInserted",
+"cells",[z].concat(z.children)))}finally{c.getModel().endUpdate()}c.setSelectionCell(z);c.scrollCellToVisible(c.getSelectionCell())}}else{for(var p=function(b){var a=q[b];null==a&&(a=new mxCell(b,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),a.vertex=!0,q[b]=a,e.push(a));return a},q={},e=[],k=0;k<g.length;k++)if(";"!=g[k].charAt(0)){var u=g[k].split("->");if(2<=u.length){var l=p(u[0]),I=p(u[u.length-1]),u=new mxCell(2<u.length?u[1]:"",new mxGeometry);u.edge=!0;l.insertEdge(u,!0);I.insertEdge(u,
 !1);e.push(u)}}if(0<e.length){g=document.createElement("div");g.style.visibility="hidden";document.body.appendChild(g);c=new Graph(g);c.getModel().beginUpdate();try{e=c.importCells(e);for(k=0;k<e.length;k++)c.getModel().isVertex(e[k])&&(x=c.getPreferredSizeForCell(e[k]),e[k].geometry.width=Math.max(e[k].geometry.width,x.width),e[k].geometry.height=Math.max(e[k].geometry.height,x.height));z=new mxFastOrganicLayout(c);z.disableEdgeStyle=!1;z.forceConstant=120;z.execute(c.getDefaultParent());v=new mxParallelEdgeLayout(c);
-v.spacing=20;v.execute(c.getDefaultParent())}finally{c.getModel().endUpdate()}c.clearCellOverlays();q=[];b.editor.graph.getModel().beginUpdate();try{q=b.editor.graph.importCells(c.getModel().getChildren(c.getDefaultParent()),f.x,f.y),b.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",q))}finally{b.editor.graph.getModel().endUpdate()}b.editor.graph.setSelectionCells(q);b.editor.graph.scrollCellToVisible(b.editor.graph.getSelectionCell());c.destroy();g.parentNode.removeChild(g)}}}function k(){return"list"==
-q.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean":"table"==q.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":"plantUmlPng"==q.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":
-"plantUmlSvg"==q.value||"plantUmlTxt"==q.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":";Example:\na->b\nb->edge label->c\nc->a\n"}var f=b.editor.graph.getFreeInsertPoint();c=document.createElement("div");c.style.textAlign="right";var l=document.createElement("textarea");l.style.resize="none";l.style.width="100%";l.style.height=
-"354px";l.style.marginBottom="16px";var q=document.createElement("select");"formatSql"==a&&(q.style.display="none");var p=document.createElement("option");p.setAttribute("value","list");mxUtils.write(p,mxResources.get("list"));"plantUml"!=a&&q.appendChild(p);null!=a&&"fromText"!=a||p.setAttribute("selected","selected");p=document.createElement("option");p.setAttribute("value","table");mxUtils.write(p,mxResources.get("formatSql"));"formatSql"==a&&(q.appendChild(p),p.setAttribute("selected","selected"));
-p=document.createElement("option");p.setAttribute("value","diagram");mxUtils.write(p,mxResources.get("diagram"));"plantUml"!=a&&q.appendChild(p);p=document.createElement("option");p.setAttribute("value","plantUmlSvg");mxUtils.write(p,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==a&&p.setAttribute("selected","selected");var u=document.createElement("option");u.setAttribute("value","plantUmlPng");mxUtils.write(u,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+
-")");var d=document.createElement("option");d.setAttribute("value","plantUmlTxt");mxUtils.write(d,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!b.isOffline()&&"plantUml"==a&&(q.appendChild(p),q.appendChild(u),q.appendChild(d));var g=k();l.value=g;c.appendChild(l);this.init=function(){l.focus()};Graph.fileSupport&&(l.addEventListener("dragover",function(b){b.stopPropagation();b.preventDefault()},!1),l.addEventListener("drop",function(b){b.stopPropagation();
-b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var a=new FileReader;a.onload=function(b){l.value=b.target.result};a.readAsText(b)}},!1));c.appendChild(q);mxEvent.addListener(q,"change",function(){var b=k();if(0==l.value.length||l.value==g)g=b,l.value=g});a=mxUtils.button(mxResources.get("close"),function(){l.value==g?b.hideDialog():b.confirm(mxResources.get("areYouSure"),function(){b.hideDialog()})});a.className="geBtn";b.editor.cancelFirst&&c.appendChild(a);p=mxUtils.button(mxResources.get("insert"),
-function(){b.hideDialog();e(l.value,q.value)});c.appendChild(p);p.className="geBtn gePrimaryBtn";b.editor.cancelFirst||c.appendChild(a);this.container=c},NewDialog=function(b,c,a,e,k,f,l,q,p,u,d,g,m,v,t,y){function B(){var b=!0;if(null!=S)for(;D<S.length&&(b||0!=mxUtils.mod(D,30));)b=S[D++],z(b.url,b.libs,b.title,b.tooltip?b.tooltip:b.title,b.select,b.imgUrl,b.info,b.onClick,b.preview),b=!1}function n(){if(aa)a||b.hideDialog(),v(aa,ea,H.value);else if(e)a||b.hideDialog(),e(V,H.value);else{var d=H.value;
-null!=d&&0<d.length&&b.pickFolder(b.mode,function(a){b.createFile(d,V,null!=U&&0<U.length?U:null,null,function(){b.hideDialog()},null,a)},b.mode!=App.MODE_GOOGLE||null==b.stateArg||null==b.stateArg.folderId)}}function x(b,a,d,g,c){null!=W&&(W.style.backgroundColor="transparent",W.style.border="1px solid transparent");I.removeAttribute("disabled");V=a;U=d;W=b;aa=g;ea=c;W.style.backgroundColor=q;W.style.border=p}function z(a,d,g,c,m,z,e,t,v){var A=document.createElement("div");A.className="geTemplate";
-A.style.height=P+"px";A.style.width=Q+"px";null!=c&&0<c.length&&A.setAttribute("title",c);if(null!=z)A.style.backgroundImage="url("+z+")",A.style.backgroundSize="contain",A.style.backgroundPosition="center center",A.style.backgroundRepeat="no-repeat",mxEvent.addListener(A,"click",function(b){x(A,null,null,a,e)}),mxEvent.addListener(A,"dblclick",function(b){n()});else if(null!=a&&0<a.length){g=v||TEMPLATE_PATH+"/"+a.substring(0,a.length-4)+".png";A.style.backgroundImage="url("+g+")";A.style.backgroundPosition=
-"center center";A.style.backgroundRepeat="no-repeat";var y=!1;mxEvent.addListener(A,"click",function(g){I.setAttribute("disabled","disabled");A.style.backgroundColor="transparent";A.style.border="1px solid transparent";g=a;g=/^https?:\/\//.test(g)&&!b.isCorsEnabledForUrl(g)?PROXY_URL+"?url="+encodeURIComponent(g):TEMPLATE_PATH+"/"+g;K.spin(N);mxUtils.get(g,mxUtils.bind(this,function(b){K.stop();200<=b.getStatus()&&299>=b.getStatus()&&(x(A,b.getText(),d),y&&n())}))});mxEvent.addListener(A,"dblclick",
-function(b){y=!0})}else A.innerHTML='<table width="100%" height="100%" style="line-height:1em;"><tr><td align="center" valign="middle">'+mxResources.get(g)+"</td></tr></table>",m&&x(A),null!=t?mxEvent.addListener(A,"click",t):(mxEvent.addListener(A,"click",function(b){x(A)}),mxEvent.addListener(A,"dblclick",function(b){n()}));N.appendChild(A)}function A(){mxEvent.addListener(N,"scroll",function(b){N.scrollTop+N.clientHeight>=N.scrollHeight&&(B(),mxEvent.consume(b))});var b=null,a;for(a in X){var d=
+v.spacing=20;v.execute(c.getDefaultParent())}finally{c.getModel().endUpdate()}c.clearCellOverlays();p=[];b.editor.graph.getModel().beginUpdate();try{p=b.editor.graph.importCells(c.getModel().getChildren(c.getDefaultParent()),f.x,f.y),b.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",p))}finally{b.editor.graph.getModel().endUpdate()}b.editor.graph.setSelectionCells(p);b.editor.graph.scrollCellToVisible(b.editor.graph.getSelectionCell());c.destroy();g.parentNode.removeChild(g)}}}function k(){return"list"==
+p.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean":"table"==p.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":"plantUmlPng"==p.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":
+"plantUmlSvg"==p.value||"plantUmlTxt"==p.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":";Example:\na->b\nb->edge label->c\nc->a\n"}var f=b.editor.graph.getFreeInsertPoint();c=document.createElement("div");c.style.textAlign="right";var l=document.createElement("textarea");l.style.resize="none";l.style.width="100%";l.style.height=
+"354px";l.style.marginBottom="16px";var p=document.createElement("select");"formatSql"==a&&(p.style.display="none");var q=document.createElement("option");q.setAttribute("value","list");mxUtils.write(q,mxResources.get("list"));"plantUml"!=a&&p.appendChild(q);null!=a&&"fromText"!=a||q.setAttribute("selected","selected");q=document.createElement("option");q.setAttribute("value","table");mxUtils.write(q,mxResources.get("formatSql"));"formatSql"==a&&(p.appendChild(q),q.setAttribute("selected","selected"));
+q=document.createElement("option");q.setAttribute("value","diagram");mxUtils.write(q,mxResources.get("diagram"));"plantUml"!=a&&p.appendChild(q);q=document.createElement("option");q.setAttribute("value","plantUmlSvg");mxUtils.write(q,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==a&&q.setAttribute("selected","selected");var u=document.createElement("option");u.setAttribute("value","plantUmlPng");mxUtils.write(u,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+
+")");var d=document.createElement("option");d.setAttribute("value","plantUmlTxt");mxUtils.write(d,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!b.isOffline()&&"plantUml"==a&&(p.appendChild(q),p.appendChild(u),p.appendChild(d));var g=k();l.value=g;c.appendChild(l);this.init=function(){l.focus()};Graph.fileSupport&&(l.addEventListener("dragover",function(b){b.stopPropagation();b.preventDefault()},!1),l.addEventListener("drop",function(b){b.stopPropagation();
+b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var a=new FileReader;a.onload=function(b){l.value=b.target.result};a.readAsText(b)}},!1));c.appendChild(p);mxEvent.addListener(p,"change",function(){var b=k();if(0==l.value.length||l.value==g)g=b,l.value=g});a=mxUtils.button(mxResources.get("close"),function(){l.value==g?b.hideDialog():b.confirm(mxResources.get("areYouSure"),function(){b.hideDialog()})});a.className="geBtn";b.editor.cancelFirst&&c.appendChild(a);q=mxUtils.button(mxResources.get("insert"),
+function(){b.hideDialog();e(l.value,p.value)});c.appendChild(q);q.className="geBtn gePrimaryBtn";b.editor.cancelFirst||c.appendChild(a);this.container=c},NewDialog=function(b,c,a,e,k,f,l,p,q,u,d,g,m,v,t,y){function A(){var b=!0;if(null!=S)for(;D<S.length&&(b||0!=mxUtils.mod(D,30));)b=S[D++],z(b.url,b.libs,b.title,b.tooltip?b.tooltip:b.title,b.select,b.imgUrl,b.info,b.onClick,b.preview),b=!1}function n(){if(aa)a||b.hideDialog(),v(aa,ea,H.value);else if(e)a||b.hideDialog(),e(V,H.value);else{var d=H.value;
+null!=d&&0<d.length&&b.pickFolder(b.mode,function(a){b.createFile(d,V,null!=U&&0<U.length?U:null,null,function(){b.hideDialog()},null,a)},b.mode!=App.MODE_GOOGLE||null==b.stateArg||null==b.stateArg.folderId)}}function x(b,a,d,g,c){null!=W&&(W.style.backgroundColor="transparent",W.style.border="1px solid transparent");I.removeAttribute("disabled");V=a;U=d;W=b;aa=g;ea=c;W.style.backgroundColor=p;W.style.border=q}function z(a,d,g,c,m,z,e,t,v){var B=document.createElement("div");B.className="geTemplate";
+B.style.height=P+"px";B.style.width=Q+"px";null!=c&&0<c.length&&B.setAttribute("title",c);if(null!=z)B.style.backgroundImage="url("+z+")",B.style.backgroundSize="contain",B.style.backgroundPosition="center center",B.style.backgroundRepeat="no-repeat",mxEvent.addListener(B,"click",function(b){x(B,null,null,a,e)}),mxEvent.addListener(B,"dblclick",function(b){n()});else if(null!=a&&0<a.length){g=v||TEMPLATE_PATH+"/"+a.substring(0,a.length-4)+".png";B.style.backgroundImage="url("+g+")";B.style.backgroundPosition=
+"center center";B.style.backgroundRepeat="no-repeat";var y=!1;mxEvent.addListener(B,"click",function(g){I.setAttribute("disabled","disabled");B.style.backgroundColor="transparent";B.style.border="1px solid transparent";g=a;g=/^https?:\/\//.test(g)&&!b.isCorsEnabledForUrl(g)?PROXY_URL+"?url="+encodeURIComponent(g):TEMPLATE_PATH+"/"+g;K.spin(N);mxUtils.get(g,mxUtils.bind(this,function(b){K.stop();200<=b.getStatus()&&299>=b.getStatus()&&(x(B,b.getText(),d),y&&n())}))});mxEvent.addListener(B,"dblclick",
+function(b){y=!0})}else B.innerHTML='<table width="100%" height="100%" style="line-height:1em;"><tr><td align="center" valign="middle">'+mxResources.get(g)+"</td></tr></table>",m&&x(B),null!=t?mxEvent.addListener(B,"click",t):(mxEvent.addListener(B,"click",function(b){x(B)}),mxEvent.addListener(B,"dblclick",function(b){n()}));N.appendChild(B)}function B(){mxEvent.addListener(N,"scroll",function(b){N.scrollTop+N.clientHeight>=N.scrollHeight&&(A(),mxEvent.consume(b))});var b=null,a;for(a in X){var d=
 document.createElement("div"),g=mxResources.get(a),c=X[a];null==g&&(g=a.substring(0,1).toUpperCase()+a.substring(1));18<g.length&&(g=g.substring(0,18)+"&hellip;");d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;";d.setAttribute("title",g+" ("+c.length+")");mxUtils.write(d,d.getAttribute("title"));null!=u&&(d.style.padding=u);ba.appendChild(d);null==b&&(b=d,b.style.backgroundColor=l);(function(a,g){mxEvent.addListener(d,
-"click",function(){b!=g&&(b.style.backgroundColor="",b=g,b.style.backgroundColor=l,N.scrollTop=0,N.innerHTML="",D=0,S=X[a],J=null,B())})})(a,d)}B()}a=null!=a?a:!0;k=null!=k?k:!1;l=null!=l?l:"#ebf2f9";q=null!=q?q:"#e6eff8";p=null!=p?p:"1px solid #ccd9ea";d=null!=d?d:EditorUi.templateFile;var F=document.createElement("div");F.style.height="100%";var E=document.createElement("div");E.style.whiteSpace="nowrap";E.style.height="46px";a&&F.appendChild(E);var G=document.createElement("img");G.setAttribute("border",
+"click",function(){b!=g&&(b.style.backgroundColor="",b=g,b.style.backgroundColor=l,N.scrollTop=0,N.innerHTML="",D=0,S=X[a],J=null,A())})})(a,d)}A()}a=null!=a?a:!0;k=null!=k?k:!1;l=null!=l?l:"#ebf2f9";p=null!=p?p:"#e6eff8";q=null!=q?q:"1px solid #ccd9ea";d=null!=d?d:EditorUi.templateFile;var F=document.createElement("div");F.style.height="100%";var E=document.createElement("div");E.style.whiteSpace="nowrap";E.style.height="46px";a&&F.appendChild(E);var G=document.createElement("img");G.setAttribute("border",
 "0");G.setAttribute("align","absmiddle");G.style.width="40px";G.style.height="40px";G.style.marginRight="10px";G.style.paddingBottom="4px";G.src=b.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":b.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":b.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":b.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":b.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":b.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";
 !c&&a&&E.appendChild(G);a&&mxUtils.write(E,(null==b.mode||b.mode==App.MODE_GOOGLE||b.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");G=".xml";b.mode==App.MODE_GOOGLE&&null!=b.drive?G=b.drive.extension:b.mode==App.MODE_DROPBOX&&null!=b.dropbox?G=b.dropbox.extension:b.mode==App.MODE_ONEDRIVE&&null!=b.oneDrive?G=b.oneDrive.extension:b.mode==App.MODE_GITHUB&&null!=b.gitHub?G=b.gitHub.extension:b.mode==App.MODE_TRELLO&&null!=b.trello&&(G=b.trello.extension);var H=
 document.createElement("input");H.setAttribute("value",b.defaultFilename+G);H.style.marginRight="20px";H.style.marginLeft="10px";H.style.width=c?"220px":"430px";this.init=function(){a&&(H.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?H.select():document.execCommand("selectAll",!1,null))};a&&E.appendChild(H);var E=!1,D=0,K=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),I=mxUtils.button(y||
 mxResources.get("create"),function(){I.setAttribute("disabled","disabled");n();I.removeAttribute("disabled")});I.className="geBtn gePrimaryBtn";if(g||m){var C=[],J=null,M=function(b){I.setAttribute("disabled","disabled");for(var a=0;a<C.length;a++)C[a].className=a==b?"geBtn gePrimaryBtn":"geBtn"},E=!0;y=document.createElement("div");y.style.whiteSpace="nowrap";y.style.height="30px";F.appendChild(y);G=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){ba.style.display="";N.style.left=
-"160px";M(0);N.scrollTop=0;N.innerHTML="";D=0;J!=S&&(S=J,B(),J=null)});C.push(G);y.appendChild(G);var O=function(b){ba.style.display="none";N.style.left="30px";M(b?-1:1);null==J&&(J=S);N.scrollTop=0;N.innerHTML="";K.spin(N);D=0;var a=function(b,a){K.stop();S=b;a?N.innerHTML=a:0==b.length?N.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):(N.innerHTML="",B())};b?m(T.value,a):g(a)};g&&(G=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){O()}),y.appendChild(G),
+"160px";M(0);N.scrollTop=0;N.innerHTML="";D=0;J!=S&&(S=J,A(),J=null)});C.push(G);y.appendChild(G);var O=function(b){ba.style.display="none";N.style.left="30px";M(b?-1:1);null==J&&(J=S);N.scrollTop=0;N.innerHTML="";K.spin(N);D=0;var a=function(b,a){K.stop();S=b;a?N.innerHTML=a:0==b.length?N.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):(N.innerHTML="",A())};b?m(T.value,a):g(a)};g&&(G=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){O()}),y.appendChild(G),
 C.push(G));if(m){G=document.createElement("span");G.style.marginLeft="10px";G.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");y.appendChild(G);var T=document.createElement("input");T.style.marginRight="10px";T.style.marginLeft="10px";T.style.width="220px";mxEvent.addListener(T,"keypress",function(b){13==b.keyCode&&O(!0)});y.appendChild(T);G=mxUtils.button(mxResources.get("search"),function(){O(!0)});G.className="geBtn";y.appendChild(G)}M(0)}var U=null,V=null,W=null,aa=null,ea=null,N=
 document.createElement("div");N.style.border="1px solid #d3d3d3";N.style.position="absolute";N.style.left="160px";N.style.right="34px";E=(a?72:40)+(E?30:0);N.style.top=E+"px";N.style.bottom="68px";N.style.margin="6px 0 0 -1px";N.style.padding="6px";N.style.overflow="auto";var ba=document.createElement("div");ba.style.cssText="position:absolute;left:30px;width:128px;top:"+E+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var P=140,Q=140,X={},R=1;X.basic=[{title:"blankDiagram",
 select:!0}];var S=X.basic;if(!c){F.appendChild(ba);F.appendChild(N);var Z=!1;/^https?:\/\//.test(d)&&!b.isCorsEnabledForUrl(d)&&(d=PROXY_URL+"?url="+encodeURIComponent(d));mxUtils.get(d,function(b){if(!Z){Z=!0;for(b=b.getXml().documentElement.firstChild;null!=b;){if("undefined"!==typeof b.getAttribute){var a=b.getAttribute("url");if(null!=a){var d=b.getAttribute("section");null==d&&(d=a.indexOf("/"),d=a.substring(0,d));a=X[d];null==a&&(R++,a=[],X[d]=a);a.push({url:b.getAttribute("url"),libs:b.getAttribute("libs"),
-title:b.getAttribute("title"),tooltip:b.getAttribute("url"),preview:b.getAttribute("preview")})}}b=b.nextSibling}A()}})}mxEvent.addListener(H,"keypress",function(a){b.dialog.container.firstChild==F&&13==a.keyCode&&n()});d=document.createElement("div");d.style.marginTop=c?"4px":"16px";d.style.textAlign="right";d.style.position="absolute";d.style.left="40px";d.style.bottom="24px";d.style.right="40px";E=mxUtils.button(mxResources.get("cancel"),function(){null!=f&&f();b.hideDialog(!0)});E.className="geBtn";
+title:b.getAttribute("title"),tooltip:b.getAttribute("url"),preview:b.getAttribute("preview")})}}b=b.nextSibling}B()}})}mxEvent.addListener(H,"keypress",function(a){b.dialog.container.firstChild==F&&13==a.keyCode&&n()});d=document.createElement("div");d.style.marginTop=c?"4px":"16px";d.style.textAlign="right";d.style.position="absolute";d.style.left="40px";d.style.bottom="24px";d.style.right="40px";E=mxUtils.button(mxResources.get("cancel"),function(){null!=f&&f();b.hideDialog(!0)});E.className="geBtn";
 !b.editor.cancelFirst||k&&null==f||d.appendChild(E);c||b.isOffline()||!a||null!=e||k||(y=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),y.className="geBtn",d.appendChild(y));c||"1"==urlParams.embed||k||(c=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var a=new FilenameDialog(b,"",mxResources.get("create"),function(a){null!=a&&0<a.length&&(a=b.getUrl(window.location.pathname+"?mode="+b.mode+"&title="+encodeURIComponent(H.value)+
 "&create="+encodeURIComponent(a)),null==b.getCurrentFile()?window.location.href=a:window.openWindow(a))},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()}),c.className="geBtn",d.appendChild(c));Graph.fileSupport&&t&&(t=mxUtils.button(mxResources.get("import"),function(){var a=document.createElement("input");a.setAttribute("multiple","multiple");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(d){b.openFiles(a.files,!0)});a.click()}),t.className="geBtn",
-d.appendChild(t));d.appendChild(I);b.editor.cancelFirst||null!=e||k&&null==f||d.appendChild(E);F.appendChild(d);this.container=F},CreateDialog=function(b,c,a,e,k,f,l,q,p,u,d,g,m,v,t){function y(a,d,m,n){function e(){mxEvent.addListener(t,"click",function(){var a=m;if(l){var d=x.value,g=d.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>g){var a=null!=a?a:F.value,n="";a==App.MODE_GOOGLE?n=b.drive.extension:a==App.MODE_GITHUB?n=b.gitHub.extension:a==App.MODE_TRELLO?n=b.trello.extension:a==App.MODE_DROPBOX?
-n=b.dropbox.extension:a==App.MODE_ONEDRIVE?n=b.oneDrive.extension:a==App.MODE_DEVICE&&(n=".xml");0<=g&&(d=d.substring(0,g));x.value=d+n}}B(m)})}var t=document.createElement("a");t.style.overflow="hidden";var v=document.createElement("img");v.src=a;v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width="60px";v.style.height="60px";v.style.paddingBottom="6px";t.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";t.className="geBaseButton";t.style.position="relative";t.style.margin=
+d.appendChild(t));d.appendChild(I);b.editor.cancelFirst||null!=e||k&&null==f||d.appendChild(E);F.appendChild(d);this.container=F},CreateDialog=function(b,c,a,e,k,f,l,p,q,u,d,g,m,v,t){function y(a,d,m,n){function e(){mxEvent.addListener(t,"click",function(){var a=m;if(l){var d=x.value,g=d.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>g){var a=null!=a?a:F.value,n="";a==App.MODE_GOOGLE?n=b.drive.extension:a==App.MODE_GITHUB?n=b.gitHub.extension:a==App.MODE_TRELLO?n=b.trello.extension:a==App.MODE_DROPBOX?
+n=b.dropbox.extension:a==App.MODE_ONEDRIVE?n=b.oneDrive.extension:a==App.MODE_DEVICE&&(n=".xml");0<=g&&(d=d.substring(0,g));x.value=d+n}}A(m)})}var t=document.createElement("a");t.style.overflow="hidden";var v=document.createElement("img");v.src=a;v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width="60px";v.style.height="60px";v.style.paddingBottom="6px";t.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";t.className="geBaseButton";t.style.position="relative";t.style.margin=
 "4px";t.style.padding="8px 8px 10px 8px";t.style.whiteSpace="nowrap";t.appendChild(v);mxClient.IS_QUIRKS&&(t.style.cssFloat="left",t.style.zoom="1");t.style.color="gray";t.style.fontSize="11px";var y=document.createElement("div");t.appendChild(y);mxUtils.write(y,d);if(null!=n&&null==b[n]){v.style.visibility="hidden";mxUtils.setOpacity(y,10);var f=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});f.spin(t);var k=window.setTimeout(function(){null==
-b[n]&&(f.stop(),t.style.display="none")},3E4);b.addListener("clientLoaded",mxUtils.bind(this,function(){null!=b[n]&&(window.clearTimeout(k),mxUtils.setOpacity(y,100),v.style.visibility="",f.stop(),e())}))}else e();z.appendChild(t);++A==g&&(mxUtils.br(z),A=0)}function B(d){var g=x.value;if(null==d||null!=g&&0<g.length)b.hideDialog(),a(g,d)}l=null!=l?l:!0;q=null!=q?q:!0;g=null!=g?g:4;f=document.createElement("div");null==e&&b.addLanguageMenu(f);var n=document.createElement("h2");mxUtils.write(n,k||
+b[n]&&(f.stop(),t.style.display="none")},3E4);b.addListener("clientLoaded",mxUtils.bind(this,function(){null!=b[n]&&(window.clearTimeout(k),mxUtils.setOpacity(y,100),v.style.visibility="",f.stop(),e())}))}else e();z.appendChild(t);++B==g&&(mxUtils.br(z),B=0)}function A(d){var g=x.value;if(null==d||null!=g&&0<g.length)b.hideDialog(),a(g,d)}l=null!=l?l:!0;p=null!=p?p:!0;g=null!=g?g:4;f=document.createElement("div");null==e&&b.addLanguageMenu(f);var n=document.createElement("h2");mxUtils.write(n,k||
 mxResources.get("create"));n.style.marginTop="0px";n.style.marginBottom="24px";f.appendChild(n);mxUtils.write(f,mxResources.get("filename")+":");var x=document.createElement("input");x.setAttribute("value",c);x.style.width="280px";x.style.marginLeft="10px";x.style.marginBottom="20px";this.init=function(){x.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?x.select():document.execCommand("selectAll",!1,null)};f.appendChild(x);null!=m&&null!=v&&"image/"==v.substring(0,
 6)&&(x.style.width="160px",k=null,"image/svg+xml"==v&&mxClient.IS_SVG?(k=document.createElement("div"),k.innerHTML=mxUtils.trim(m),m=k.getElementsByTagName("svg")[0],v=parseInt(m.getAttribute("width")),t=parseInt(m.getAttribute("height")),m.setAttribute("viewBox","0 0 "+v+" "+t),m.setAttribute("width","120px"),m.setAttribute("height","80px")):(k=document.createElement("img"),k.setAttribute("src","data:"+v+(t?";base64,":";utf8,")+m)),k.style.position="absolute",k.style.top="70px",k.style.right="100px",
-k.style.maxWidth="120px",k.style.maxHeight="80px",mxUtils.setPrefixedStyle(k.style,"transform","translate(50%,-50%)"),f.appendChild(k),p&&Editor.popupsAllowed&&(k.style.cursor="pointer",mxEvent.addListener(k,"click",function(){B("_blank")})));mxUtils.br(f);var z=document.createElement("div");z.style.textAlign="center";var A=0;z.style.marginTop="6px";f.appendChild(z);var F=document.createElement("select");F.style.marginLeft="10px";b.isOfflineApp()||b.isOffline()||("function"===typeof window.DriveClient&&
+k.style.maxWidth="120px",k.style.maxHeight="80px",mxUtils.setPrefixedStyle(k.style,"transform","translate(50%,-50%)"),f.appendChild(k),q&&Editor.popupsAllowed&&(k.style.cursor="pointer",mxEvent.addListener(k,"click",function(){A("_blank")})));mxUtils.br(f);var z=document.createElement("div");z.style.textAlign="center";var B=0;z.style.marginTop="6px";f.appendChild(z);var F=document.createElement("select");F.style.marginLeft="10px";b.isOfflineApp()||b.isOffline()||("function"===typeof window.DriveClient&&
 (m=document.createElement("option"),m.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(m,mxResources.get("googleDrive")),F.appendChild(m),y(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(m,mxResources.get("oneDrive")),F.appendChild(m),b.mode==App.MODE_ONEDRIVE&&m.setAttribute("selected","selected"),y(IMAGE_PATH+"/onedrive-logo.svg",
 mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(m,mxResources.get("dropbox")),F.appendChild(m),b.mode==App.MODE_DROPBOX&&m.setAttribute("selected","selected"),y(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=b.gitHub&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_GITHUB),mxUtils.write(m,mxResources.get("github")),
 F.appendChild(m),y(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=b.trello&&(m=document.createElement("option"),m.setAttribute("value",App.MODE_TRELLO),mxUtils.write(m,mxResources.get("trello")),F.appendChild(m),y(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==b.getCurrentFile()||(m=document.createElement("option"),m.setAttribute("value",App.MODE_DEVICE),mxUtils.write(m,
-mxResources.get("device")),F.appendChild(m),b.mode!=App.MODE_DEVICE&&q||m.setAttribute("selected","selected"),d&&y(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));q&&isLocalStorage&&"0"!=urlParams.browser&&(q=document.createElement("option"),q.setAttribute("value",App.MODE_BROWSER),mxUtils.write(q,mxResources.get("browser")),F.appendChild(q),b.mode==App.MODE_BROWSER&&q.setAttribute("selected","selected"),y(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),
-App.MODE_BROWSER));q=document.createElement("div");q.style.marginTop="26px";q.style.textAlign="center";null!=u&&(d=mxUtils.button(mxResources.get("help"),function(){b.openLink(u)}),d.className="geBtn",q.appendChild(d));d=mxUtils.button(mxResources.get("cancel"),function(){null!=e?e():(b.fileLoaded(null),b.hideDialog(),window.close(),window.location.href=b.getUrl())});d.className="geBtn";b.editor.cancelFirst&&q.appendChild(d);null==e&&(m=mxUtils.button(mxResources.get("decideLater"),function(){B(null)}),
-m.className="geBtn",q.appendChild(m));p&&Editor.popupsAllowed&&(p=mxUtils.button(mxResources.get("openInNewWindow"),function(){B("_blank")}),p.className="geBtn",q.appendChild(p));CreateDialog.showDownloadButton&&(p=mxUtils.button(mxResources.get("download"),function(){B("download")}),p.className="geBtn",q.appendChild(p));b.editor.cancelFirst||q.appendChild(d);mxEvent.addListener(x,"keypress",function(a){13==a.keyCode?B(App.MODE_DEVICE):27==a.keyCode&&(b.fileLoaded(null),b.hideDialog(),window.close())});
-f.appendChild(q);this.container=f};CreateDialog.showDownloadButton=!0;
-var PopupDialog=function(b,c,a,e,k){k=null!=k?k:!0;var f=document.createElement("div");f.style.textAlign="left";mxUtils.write(f,mxResources.get("fileOpenLocation"));mxUtils.br(f);mxUtils.br(f);var l=mxUtils.button(mxResources.get("openInThisWindow"),function(){k&&b.hideDialog();null!=e&&e()});l.className="geBtn";l.style.marginBottom="8px";l.style.width="280px";f.appendChild(l);mxUtils.br(f);var q=mxUtils.button(mxResources.get("openInNewWindow"),function(){k&&b.hideDialog();null!=a&&a();b.openLink(c,
-null,!0)});q.className="geBtn gePrimaryBtn";q.style.width=l.style.width;f.appendChild(q);mxUtils.br(f);mxUtils.br(f);mxUtils.write(f,mxResources.get("allowPopups"));this.container=f},ImageDialog=function(b,c,a,e,k,f){f=null!=f?f:!0;var l=b.editor.graph,q=document.createElement("div");mxUtils.write(q,c);c=document.createElement("div");c.className="geTitle";c.style.backgroundColor="transparent";c.style.borderColor="transparent";c.style.whiteSpace="nowrap";c.style.textOverflow="clip";c.style.cursor=
-"default";mxClient.IS_VML||(c.style.paddingRight="20px");var p=document.createElement("input");p.setAttribute("value",a);p.setAttribute("type","text");p.setAttribute("spellcheck","false");p.setAttribute("autocorrect","off");p.setAttribute("autocomplete","off");p.setAttribute("autocapitalize","off");p.style.marginTop="6px";p.style.width=(Graph.fileSupport?420:340)+(mxClient.IS_QUIRKS?20:-20)+"px";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat";
-p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";a=document.createElement("div");a.setAttribute("title",mxResources.get("reset"));a.style.position="relative";a.style.left="-16px";a.style.width="12px";a.style.height="14px";a.style.cursor="pointer";a.style.display=mxClient.IS_VML?"inline":"inline-block";a.style.top=(mxClient.IS_VML?0:3)+"px";a.style.background="url('"+b.editor.transparentImage+"')";mxEvent.addListener(a,"click",function(){p.value="";p.focus()});c.appendChild(p);c.appendChild(a);
-q.appendChild(c);var u=function(a,d,g,c){var n="data:"==a.substring(0,5);!b.isOffline()||n&&"undefined"===typeof chrome?0<a.length&&b.spinner.spin(document.body,mxResources.get("inserting"))?b.loadImage(a,function(n){b.spinner.stop();b.hideDialog();var m=!1===c?1:null!=d&&null!=g?Math.max(d/n.width,g/n.height):Math.min(1,Math.min(520/n.width,520/n.height));f&&(a=b.convertDataUri(a));e(a,Math.round(Number(n.width)*m),Math.round(Number(n.height)*m))},function(){b.spinner.stop();e(null);b.showError(mxResources.get("error"),
-mxResources.get("fileNotFound"),mxResources.get("ok"))}):(b.hideDialog(),e(a)):(a=b.convertDataUri(a),d=null==d?120:d,g=null==g?100:g,b.hideDialog(),e(a,d,g))},d=function(a,d){if(null!=a){var g=k?null:l.getModel().getGeometry(l.getSelectionCell());null!=g?u(a,g.width,g.height,d):u(a,null,null,d)}else b.hideDialog(),e(null)};this.init=function(){p.focus();if(Graph.fileSupport){p.setAttribute("placeholder",mxResources.get("dragImagesHere"));var a=q.parentNode,g=null;mxEvent.addListener(a,"dragleave",
+mxResources.get("device")),F.appendChild(m),b.mode!=App.MODE_DEVICE&&p||m.setAttribute("selected","selected"),d&&y(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));p&&isLocalStorage&&"0"!=urlParams.browser&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_BROWSER),mxUtils.write(p,mxResources.get("browser")),F.appendChild(p),b.mode==App.MODE_BROWSER&&p.setAttribute("selected","selected"),y(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),
+App.MODE_BROWSER));p=document.createElement("div");p.style.marginTop="26px";p.style.textAlign="center";null!=u&&(d=mxUtils.button(mxResources.get("help"),function(){b.openLink(u)}),d.className="geBtn",p.appendChild(d));d=mxUtils.button(mxResources.get("cancel"),function(){null!=e?e():(b.fileLoaded(null),b.hideDialog(),window.close(),window.location.href=b.getUrl())});d.className="geBtn";b.editor.cancelFirst&&p.appendChild(d);null==e&&(m=mxUtils.button(mxResources.get("decideLater"),function(){A(null)}),
+m.className="geBtn",p.appendChild(m));q&&Editor.popupsAllowed&&(q=mxUtils.button(mxResources.get("openInNewWindow"),function(){A("_blank")}),q.className="geBtn",p.appendChild(q));CreateDialog.showDownloadButton&&(q=mxUtils.button(mxResources.get("download"),function(){A("download")}),q.className="geBtn",p.appendChild(q));b.editor.cancelFirst||p.appendChild(d);mxEvent.addListener(x,"keypress",function(a){13==a.keyCode?A(App.MODE_DEVICE):27==a.keyCode&&(b.fileLoaded(null),b.hideDialog(),window.close())});
+f.appendChild(p);this.container=f};CreateDialog.showDownloadButton=!0;
+var PopupDialog=function(b,c,a,e,k){k=null!=k?k:!0;var f=document.createElement("div");f.style.textAlign="left";mxUtils.write(f,mxResources.get("fileOpenLocation"));mxUtils.br(f);mxUtils.br(f);var l=mxUtils.button(mxResources.get("openInThisWindow"),function(){k&&b.hideDialog();null!=e&&e()});l.className="geBtn";l.style.marginBottom="8px";l.style.width="280px";f.appendChild(l);mxUtils.br(f);var p=mxUtils.button(mxResources.get("openInNewWindow"),function(){k&&b.hideDialog();null!=a&&a();b.openLink(c,
+null,!0)});p.className="geBtn gePrimaryBtn";p.style.width=l.style.width;f.appendChild(p);mxUtils.br(f);mxUtils.br(f);mxUtils.write(f,mxResources.get("allowPopups"));this.container=f},ImageDialog=function(b,c,a,e,k,f){f=null!=f?f:!0;var l=b.editor.graph,p=document.createElement("div");mxUtils.write(p,c);c=document.createElement("div");c.className="geTitle";c.style.backgroundColor="transparent";c.style.borderColor="transparent";c.style.whiteSpace="nowrap";c.style.textOverflow="clip";c.style.cursor=
+"default";mxClient.IS_VML||(c.style.paddingRight="20px");var q=document.createElement("input");q.setAttribute("value",a);q.setAttribute("type","text");q.setAttribute("spellcheck","false");q.setAttribute("autocorrect","off");q.setAttribute("autocomplete","off");q.setAttribute("autocapitalize","off");q.style.marginTop="6px";q.style.width=(Graph.fileSupport?420:340)+(mxClient.IS_QUIRKS?20:-20)+"px";q.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";q.style.backgroundRepeat="no-repeat";
+q.style.backgroundPosition="100% 50%";q.style.paddingRight="14px";a=document.createElement("div");a.setAttribute("title",mxResources.get("reset"));a.style.position="relative";a.style.left="-16px";a.style.width="12px";a.style.height="14px";a.style.cursor="pointer";a.style.display=mxClient.IS_VML?"inline":"inline-block";a.style.top=(mxClient.IS_VML?0:3)+"px";a.style.background="url('"+b.editor.transparentImage+"')";mxEvent.addListener(a,"click",function(){q.value="";q.focus()});c.appendChild(q);c.appendChild(a);
+p.appendChild(c);var u=function(a,d,g,c){var n="data:"==a.substring(0,5);!b.isOffline()||n&&"undefined"===typeof chrome?0<a.length&&b.spinner.spin(document.body,mxResources.get("inserting"))?b.loadImage(a,function(n){b.spinner.stop();b.hideDialog();var m=!1===c?1:null!=d&&null!=g?Math.max(d/n.width,g/n.height):Math.min(1,Math.min(520/n.width,520/n.height));f&&(a=b.convertDataUri(a));e(a,Math.round(Number(n.width)*m),Math.round(Number(n.height)*m))},function(){b.spinner.stop();e(null);b.showError(mxResources.get("error"),
+mxResources.get("fileNotFound"),mxResources.get("ok"))}):(b.hideDialog(),e(a)):(a=b.convertDataUri(a),d=null==d?120:d,g=null==g?100:g,b.hideDialog(),e(a,d,g))},d=function(a,d){if(null!=a){var g=k?null:l.getModel().getGeometry(l.getSelectionCell());null!=g?u(a,g.width,g.height,d):u(a,null,null,d)}else b.hideDialog(),e(null)};this.init=function(){q.focus();if(Graph.fileSupport){q.setAttribute("placeholder",mxResources.get("dragImagesHere"));var a=p.parentNode,g=null;mxEvent.addListener(a,"dragleave",
 function(b){null!=g&&(g.parentNode.removeChild(g),g=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(a,"dragover",mxUtils.bind(this,function(d){null==g&&(!mxClient.IS_IE||10<document.documentMode)&&(g=b.highlightElement(a));d.stopPropagation();d.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(a){null!=g&&(g.parentNode.removeChild(g),g=null);if(0<a.dataTransfer.files.length)b.importFiles(a.dataTransfer.files,0,0,b.maxImageSize,function(b,a,g,c,m,e,t,v){d(b,
 v)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var a=0;a<b.length;a++)b[a]()},!mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(c)&&d(decodeURIComponent(c))}a.stopPropagation();a.preventDefault()}),!1)}};a=document.createElement("div");a.style.marginTop=mxClient.IS_QUIRKS?"22px":"14px";a.style.textAlign="right";c=mxUtils.button(mxResources.get("cancel"),
-function(){b.spinner.stop();b.hideDialog()});c.className="geBtn";b.editor.cancelFirst&&a.appendChild(c);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(p.value=b.url));p.focus()};if(Graph.fileSupport){var g=document.createElement("input");g.setAttribute("multiple","multiple");g.setAttribute("type","file");if(null==document.documentMode){mxEvent.addListener(g,"change",function(a){b.importFiles(g.files,
-0,0,b.maxImageSize,function(b,a,g,c,m,z){d(b)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var a=0;a<b.length;a++)b[a]()},!0)});var m=mxUtils.button(mxResources.get("open"),function(){g.click()});m.className="geBtn";a.appendChild(m)}}document.createElement("canvas").getContext&&"data:image/"==p.value.substring(0,11)&&"data:image/svg"!=p.value.substring(0,14)&&(m=mxUtils.button(mxResources.get("crop"),function(){var a=new CropImageDialog(b,p.value,function(b){p.value=
+function(){b.spinner.stop();b.hideDialog()});c.className="geBtn";b.editor.cancelFirst&&a.appendChild(c);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(q.value=b.url));q.focus()};if(Graph.fileSupport){var g=document.createElement("input");g.setAttribute("multiple","multiple");g.setAttribute("type","file");if(null==document.documentMode){mxEvent.addListener(g,"change",function(a){b.importFiles(g.files,
+0,0,b.maxImageSize,function(b,a,g,c,m,z){d(b)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var a=0;a<b.length;a++)b[a]()},!0)});var m=mxUtils.button(mxResources.get("open"),function(){g.click()});m.className="geBtn";a.appendChild(m)}}document.createElement("canvas").getContext&&"data:image/"==q.value.substring(0,11)&&"data:image/svg"!=q.value.substring(0,14)&&(m=mxUtils.button(mxResources.get("crop"),function(){var a=new CropImageDialog(b,q.value,function(b){q.value=
 b});b.showDialog(a.container,200,185,!0,!0);a.init()}),m.className="geBtn",a.appendChild(m));"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top&&(m=mxUtils.button(mxResources.get("search"),function(){if(null==b.imageSearchPicker){var a=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);b.imageSearchPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.imageSearchPicker.setVisible(!0)}),
 m.className="geBtn",a.appendChild(m),null!=b.drive&&"1"==urlParams.photos&&(m=mxUtils.button(mxResources.get("googlePlus"),function(){b.spinner.spin(document.body,mxResources.get("authorizing"))&&b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();if(null==b.photoPicker){var a=gapi.auth.getToken().access_token,a=(new google.picker.PickerBuilder).setAppId(b.drive.appId).setLocale(mxLanguage).setOAuthToken(a).addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD);
-b.photoPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.photoPicker.setVisible(!0)}))}),m.className="geBtn",a.appendChild(m)));mxEvent.addListener(p,"keypress",function(b){13==b.keyCode&&d(p.value)});m=mxUtils.button(mxResources.get("apply"),function(){d(p.value)});m.className="geBtn gePrimaryBtn";a.appendChild(m);b.editor.cancelFirst||a.appendChild(c);Graph.fileSupport&&(a.style.marginTop="120px",q.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",q.style.backgroundPosition=
-"center 65%",q.style.backgroundRepeat="no-repeat",c=document.createElement("div"),c.style.position="absolute",c.style.width="420px",c.style.top="58%",c.style.textAlign="center",c.style.fontSize="18px",c.style.color="#a0c3ff",mxUtils.write(c,mxResources.get("dragImagesHere")),q.appendChild(c));q.appendChild(a);this.container=q},LinkDialog=function(b,c,a,e,k){function f(b,a,d){d=mxUtils.button("",d);d.className="geBtn";d.setAttribute("title",a);a=document.createElement("img");a.style.height="26px";
-a.style.width="26px";a.setAttribute("src",b);d.style.minWidth="42px";d.style.verticalAlign="middle";d.appendChild(a);B.appendChild(d)}var l=document.createElement("div");mxUtils.write(l,mxResources.get("editLink")+":");var q=document.createElement("div");q.className="geTitle";q.style.backgroundColor="transparent";q.style.borderColor="transparent";q.style.whiteSpace="nowrap";q.style.textOverflow="clip";q.style.cursor="default";mxClient.IS_VML||(q.style.paddingRight="20px");var p=document.createElement("input");
-p.setAttribute("placeholder",mxResources.get("dragUrlsHere"));p.setAttribute("type","text");p.style.marginTop="6px";p.style.width="440px";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat";p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";var u=document.createElement("div");u.setAttribute("title",mxResources.get("reset"));u.style.position="relative";u.style.left="-16px";u.style.width="12px";u.style.height="14px";u.style.cursor="pointer";
-u.style.display=mxClient.IS_VML?"inline":"inline-block";u.style.top=(mxClient.IS_VML?0:3)+"px";u.style.background="url('"+b.editor.transparentImage+"')";mxEvent.addListener(u,"click",function(){p.value="";p.focus()});var d=document.createElement("input");d.style.cssText="margin-right:8px;margin-bottom:8px;";d.setAttribute("value","url");d.setAttribute("type","radio");d.setAttribute("name","current-linkdialog");var g=document.createElement("input");g.style.cssText="margin-right:8px;margin-bottom:8px;";
-g.setAttribute("value","url");g.setAttribute("type","radio");g.setAttribute("name","current-linkdialog");var m=document.createElement("select");m.style.width="420px";if(k&&null!=b.pages){null!=c&&"data:page/id,"==c.substring(0,13)?(g.setAttribute("checked","checked"),g.defaultChecked=!0):(p.setAttribute("value",c),d.setAttribute("checked","checked"),d.defaultChecked=!0);p.style.width="420px";q.appendChild(d);q.appendChild(p);q.appendChild(u);mxUtils.br(q);q.appendChild(g);k=!1;for(u=0;u<b.pages.length;u++){var v=
+b.photoPicker=a.setCallback(function(b){ImageDialog.filePicked(b)}).build()}b.photoPicker.setVisible(!0)}))}),m.className="geBtn",a.appendChild(m)));mxEvent.addListener(q,"keypress",function(b){13==b.keyCode&&d(q.value)});m=mxUtils.button(mxResources.get("apply"),function(){d(q.value)});m.className="geBtn gePrimaryBtn";a.appendChild(m);b.editor.cancelFirst||a.appendChild(c);Graph.fileSupport&&(a.style.marginTop="120px",p.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",p.style.backgroundPosition=
+"center 65%",p.style.backgroundRepeat="no-repeat",c=document.createElement("div"),c.style.position="absolute",c.style.width="420px",c.style.top="58%",c.style.textAlign="center",c.style.fontSize="18px",c.style.color="#a0c3ff",mxUtils.write(c,mxResources.get("dragImagesHere")),p.appendChild(c));p.appendChild(a);this.container=p},LinkDialog=function(b,c,a,e,k){function f(b,a,d){d=mxUtils.button("",d);d.className="geBtn";d.setAttribute("title",a);a=document.createElement("img");a.style.height="26px";
+a.style.width="26px";a.setAttribute("src",b);d.style.minWidth="42px";d.style.verticalAlign="middle";d.appendChild(a);A.appendChild(d)}var l=document.createElement("div");mxUtils.write(l,mxResources.get("editLink")+":");var p=document.createElement("div");p.className="geTitle";p.style.backgroundColor="transparent";p.style.borderColor="transparent";p.style.whiteSpace="nowrap";p.style.textOverflow="clip";p.style.cursor="default";mxClient.IS_VML||(p.style.paddingRight="20px");var q=document.createElement("input");
+q.setAttribute("placeholder",mxResources.get("dragUrlsHere"));q.setAttribute("type","text");q.style.marginTop="6px";q.style.width="440px";q.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";q.style.backgroundRepeat="no-repeat";q.style.backgroundPosition="100% 50%";q.style.paddingRight="14px";var u=document.createElement("div");u.setAttribute("title",mxResources.get("reset"));u.style.position="relative";u.style.left="-16px";u.style.width="12px";u.style.height="14px";u.style.cursor="pointer";
+u.style.display=mxClient.IS_VML?"inline":"inline-block";u.style.top=(mxClient.IS_VML?0:3)+"px";u.style.background="url('"+b.editor.transparentImage+"')";mxEvent.addListener(u,"click",function(){q.value="";q.focus()});var d=document.createElement("input");d.style.cssText="margin-right:8px;margin-bottom:8px;";d.setAttribute("value","url");d.setAttribute("type","radio");d.setAttribute("name","current-linkdialog");var g=document.createElement("input");g.style.cssText="margin-right:8px;margin-bottom:8px;";
+g.setAttribute("value","url");g.setAttribute("type","radio");g.setAttribute("name","current-linkdialog");var m=document.createElement("select");m.style.width="420px";if(k&&null!=b.pages){null!=c&&"data:page/id,"==c.substring(0,13)?(g.setAttribute("checked","checked"),g.defaultChecked=!0):(q.setAttribute("value",c),d.setAttribute("checked","checked"),d.defaultChecked=!0);q.style.width="420px";p.appendChild(d);p.appendChild(q);p.appendChild(u);mxUtils.br(p);p.appendChild(g);k=!1;for(u=0;u<b.pages.length;u++){var v=
 document.createElement("option");mxUtils.write(v,b.pages[u].getName()||mxResources.get("pageWithNumber",[u+1]));v.setAttribute("value","data:page/id,"+b.pages[u].getId());c==v.getAttribute("value")&&(v.setAttribute("selected","selected"),k=!0);m.appendChild(v)}if(!k&&g.checked){var t=document.createElement("option");mxUtils.write(t,mxResources.get("pageNotFound"));t.setAttribute("disabled","disabled");t.setAttribute("selected","selected");t.setAttribute("value","pageNotFound");m.appendChild(t);mxEvent.addListener(m,
-"change",function(){null==t.parentNode||t.selected||t.parentNode.removeChild(t)})}q.appendChild(m)}else p.setAttribute("value",c),q.appendChild(p),q.appendChild(u);l.appendChild(q);var y=mxUtils.button(a,function(){b.hideDialog();e(g.checked?"pageNotFound"!==m.value?m.value:c:p.value,LinkDialog.selectedDocs)});y.style.verticalAlign="middle";y.className="geBtn gePrimaryBtn";this.init=function(){g.checked?m.focus():(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?
-p.select():document.execCommand("selectAll",!1,null));mxEvent.addListener(m,"focus",function(){d.removeAttribute("checked");g.setAttribute("checked","checked");g.checked=!0});mxEvent.addListener(p,"focus",function(){g.removeAttribute("checked");d.setAttribute("checked","checked");d.checked=!0});if(Graph.fileSupport){var a=l.parentNode,c=null;mxEvent.addListener(a,"dragleave",function(b){null!=c&&(c.parentNode.removeChild(c),c=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(a,"dragover",
-mxUtils.bind(this,function(d){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=b.highlightElement(a));d.stopPropagation();d.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")&&(p.value=decodeURIComponent(b.dataTransfer.getData("text/uri-list")),d.setAttribute("checked","checked"),d.checked=!0,y.click());b.stopPropagation();b.preventDefault()}),!1)}};var B=document.createElement("div");
-B.style.marginTop="20px";B.style.textAlign="right";a=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});a.style.verticalAlign="middle";a.className="geBtn";b.editor.cancelFirst&&B.appendChild(a);q=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://desk.draw.io/solution/articles/16000080137")});q.style.verticalAlign="middle";q.className="geBtn";B.appendChild(q);b.isOffline()&&!mxClient.IS_CHROMEAPP&&(q.style.display="none");LinkDialog.selectedDocs=null;LinkDialog.filePicked=
-function(b){if(b.action==google.picker.Action.PICKED){LinkDialog.selectedDocs=b.docs;var a=b.docs[0].url;"application/mxe"==b.docs[0].mimeType||null!=b.docs[0].mimeType&&"application/vnd.jgraph."==b.docs[0].mimeType.substring(0,23)?a="https://www.draw.io/#G"+b.docs[0].id:"application/vnd.google-apps.folder"==b.docs[0].mimeType&&(a="https://drive.google.com/#folders/"+b.docs[0].id);p.value=a;p.focus()}else LinkDialog.selectedDocs=null;p.focus()};"undefined"!=typeof google&&"undefined"!=typeof google.picker&&
+"change",function(){null==t.parentNode||t.selected||t.parentNode.removeChild(t)})}p.appendChild(m)}else q.setAttribute("value",c),p.appendChild(q),p.appendChild(u);l.appendChild(p);var y=mxUtils.button(a,function(){b.hideDialog();e(g.checked?"pageNotFound"!==m.value?m.value:c:q.value,LinkDialog.selectedDocs)});y.style.verticalAlign="middle";y.className="geBtn gePrimaryBtn";this.init=function(){g.checked?m.focus():(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?
+q.select():document.execCommand("selectAll",!1,null));mxEvent.addListener(m,"focus",function(){d.removeAttribute("checked");g.setAttribute("checked","checked");g.checked=!0});mxEvent.addListener(q,"focus",function(){g.removeAttribute("checked");d.setAttribute("checked","checked");d.checked=!0});if(Graph.fileSupport){var a=l.parentNode,c=null;mxEvent.addListener(a,"dragleave",function(b){null!=c&&(c.parentNode.removeChild(c),c=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(a,"dragover",
+mxUtils.bind(this,function(d){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=b.highlightElement(a));d.stopPropagation();d.preventDefault()}));mxEvent.addListener(a,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")&&(q.value=decodeURIComponent(b.dataTransfer.getData("text/uri-list")),d.setAttribute("checked","checked"),d.checked=!0,y.click());b.stopPropagation();b.preventDefault()}),!1)}};var A=document.createElement("div");
+A.style.marginTop="20px";A.style.textAlign="right";a=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});a.style.verticalAlign="middle";a.className="geBtn";b.editor.cancelFirst&&A.appendChild(a);p=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://desk.draw.io/solution/articles/16000080137")});p.style.verticalAlign="middle";p.className="geBtn";A.appendChild(p);b.isOffline()&&!mxClient.IS_CHROMEAPP&&(p.style.display="none");LinkDialog.selectedDocs=null;LinkDialog.filePicked=
+function(b){if(b.action==google.picker.Action.PICKED){LinkDialog.selectedDocs=b.docs;var a=b.docs[0].url;"application/mxe"==b.docs[0].mimeType||null!=b.docs[0].mimeType&&"application/vnd.jgraph."==b.docs[0].mimeType.substring(0,23)?a="https://www.draw.io/#G"+b.docs[0].id:"application/vnd.google-apps.folder"==b.docs[0].mimeType&&(a="https://drive.google.com/#folders/"+b.docs[0].id);q.value=a;q.focus()}else LinkDialog.selectedDocs=null;q.focus()};"undefined"!=typeof google&&"undefined"!=typeof google.picker&&
 null!=b.drive&&f(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googlePlus"),function(){b.spinner.spin(document.body,mxResources.get("authorizing"))&&b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();if(null==b.linkPicker){var a=gapi.auth.getToken().access_token,d=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0),g=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0),c=(new google.picker.DocsView).setIncludeFolders(!0).setEnableTeamDrives(!0).setSelectFolderEnabled(!0),
 a=(new google.picker.PickerBuilder).setAppId(b.drive.appId).setLocale(mxLanguage).setOAuthToken(a).enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES).addView(d).addView(g).addView(c).addView(google.picker.ViewId.RECENTLY_PICKED).addView(google.picker.ViewId.IMAGE_SEARCH).addView(google.picker.ViewId.VIDEO_SEARCH).addView(google.picker.ViewId.MAPS);"1"==urlParams.photos&&a.addView(google.picker.ViewId.PHOTOS).addView(google.picker.ViewId.PHOTO_ALBUMS).addView(google.picker.ViewId.PHOTO_UPLOAD);
-b.linkPicker=a.setCallback(function(b){LinkDialog.filePicked(b)}).build()}b.linkPicker.setVisible(!0)}))});"undefined"!=typeof Dropbox&&"undefined"!=typeof Dropbox.choose&&f(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),function(){Dropbox.choose({linkType:"direct",cancel:function(){},success:function(b){p.value=b[0].link;p.focus()}})});null!=b.oneDrive&&f(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),function(){b.oneDrive.pickFile(function(b,a){p.value=a.value[0].webUrl;
-p.focus()})});null!=b.gitHub&&f(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),function(){b.gitHub.pickFile(function(b){if(null!=b){b=b.split("/");var a=b[0],d=b[1],g=b[2];b=b.slice(3,b.length).join("/");p.value="https://github.com/"+a+"/"+d+"/blob/"+g+"/"+b;p.focus()}})});mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&(b.hideDialog(),e(g.checked?m.value:p.value,LinkDialog.selectedDocs))});B.appendChild(y);b.editor.cancelFirst||B.appendChild(a);l.appendChild(B);this.container=
+b.linkPicker=a.setCallback(function(b){LinkDialog.filePicked(b)}).build()}b.linkPicker.setVisible(!0)}))});"undefined"!=typeof Dropbox&&"undefined"!=typeof Dropbox.choose&&f(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),function(){Dropbox.choose({linkType:"direct",cancel:function(){},success:function(b){q.value=b[0].link;q.focus()}})});null!=b.oneDrive&&f(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),function(){b.oneDrive.pickFile(function(b,a){q.value=a.value[0].webUrl;
+q.focus()})});null!=b.gitHub&&f(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),function(){b.gitHub.pickFile(function(b){if(null!=b){b=b.split("/");var a=b[0],d=b[1],g=b[2];b=b.slice(3,b.length).join("/");q.value="https://github.com/"+a+"/"+d+"/blob/"+g+"/"+b;q.focus()}})});mxEvent.addListener(q,"keypress",function(a){13==a.keyCode&&(b.hideDialog(),e(g.checked?m.value:q.value,LinkDialog.selectedDocs))});A.appendChild(y);b.editor.cancelFirst||A.appendChild(a);l.appendChild(A);this.container=
 l},AboutDialog=function(b){var c=document.createElement("div");c.style.marginTop="6px";c.setAttribute("align","center");var a=document.createElement("img");a.style.border="0px";mxClient.IS_SVG?(a.setAttribute("width","164"),a.setAttribute("height","221"),a.style.width="164px",a.style.height="221px",a.setAttribute("src",IMAGE_PATH+"/drawlogo-text-bottom.svg")):(a.setAttribute("width","176"),a.setAttribute("height","219"),a.style.width="170px",a.style.height="219px",a.setAttribute("src",IMAGE_PATH+
 "/logo-flat.png"));"dark"==uiTheme&&(a.style.filter="grayscale(100%) invert(100%)");c.appendChild(a);mxUtils.br(c);var a="dark"==uiTheme?"#cccccc":"#505050",e=document.createElement("small");e.innerHTML="v "+EditorUi.VERSION;e.style.color=a;c.appendChild(e);mxUtils.br(c);mxUtils.br(c);e=document.createElement("small");e.style.color=a;e.innerHTML='&copy; 2005-2019 <a href="https://about.draw.io/" style="color:inherit;" target="_blank">JGraph Ltd</a>.<br>All Rights Reserved.';c.appendChild(e);mxEvent.addListener(c,
 "click",function(a){"A"!=mxEvent.getSource(a).nodeName&&b.hideDialog()});this.container=c},FeedbackDialog=function(b){var c=document.createElement("div"),a=document.createElement("div");mxUtils.write(a,mxResources.get("sendYourFeedbackToDrawIo"));a.style.fontSize="18px";a.style.marginBottom="18px";c.appendChild(a);a=document.createElement("div");mxUtils.write(a,mxResources.get("yourEmailAddress")+" ("+mxResources.get("required")+")");c.appendChild(a);var e=document.createElement("input");e.setAttribute("type",
-"text");e.style.marginTop="6px";e.style.width="600px";var k=mxUtils.button(mxResources.get("sendMessage"),function(){var a=p.value+(l.checked?"\nDiagram:\n"+mxUtils.getXml(b.getXmlFileData()):"")+"\nBrowser:\n"+navigator.userAgent;a.length>FeedbackDialog.maxAttachmentSize?b.alert(mxResources.get("drawingTooLarge")):(b.hideDialog(),b.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(e.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+
+"text");e.style.marginTop="6px";e.style.width="600px";var k=mxUtils.button(mxResources.get("sendMessage"),function(){var a=q.value+(l.checked?"\nDiagram:\n"+mxUtils.getXml(b.getXmlFileData()):"")+"\nBrowser:\n"+navigator.userAgent;a.length>FeedbackDialog.maxAttachmentSize?b.alert(mxResources.get("drawingTooLarge")):(b.hideDialog(),b.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(e.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+
 "&url="+encodeURIComponent(window.location.href)+"&body="+encodeURIComponent("Feedback:\n"+a),function(a){b.spinner.stop();200<=a.getStatus()&&299>=a.getStatus()?b.alert(mxResources.get("feedbackSent")):b.alert(mxResources.get("errorSendingFeedback"))},function(){b.spinner.stop();b.alert(mxResources.get("errorSendingFeedback"))}))});k.className="geBtn gePrimaryBtn";k.setAttribute("disabled","disabled");var f=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
 mxEvent.addListener(e,"change",function(){0<e.value.length&&0<f.test(e.value)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")});mxEvent.addListener(e,"keyup",function(){0<e.value.length&&f.test(e.value)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")});c.appendChild(e);this.init=function(){e.focus()};var l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("checked","checked");l.defaultChecked=!0;a=document.createElement("p");a.style.marginTop=
-"14px";a.appendChild(l);var q=document.createElement("span");mxUtils.write(q," "+mxResources.get("includeCopyOfMyDiagram"));a.appendChild(q);mxEvent.addListener(q,"click",function(b){l.checked=!l.checked;mxEvent.consume(b)});c.appendChild(a);a=document.createElement("div");mxUtils.write(a,mxResources.get("feedback"));c.appendChild(a);var p=document.createElement("textarea");p.style.resize="none";p.style.width="600px";p.style.height="140px";p.style.marginTop="6px";p.setAttribute("placeholder",mxResources.get("commentsNotes"));
-c.appendChild(p);a=document.createElement("div");a.style.marginTop="26px";a.style.textAlign="right";q=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});q.className="geBtn";b.editor.cancelFirst?(a.appendChild(q),a.appendChild(k)):(a.appendChild(k),a.appendChild(q));c.appendChild(a);this.container=c};FeedbackDialog.maxAttachmentSize=1E6;
+"14px";a.appendChild(l);var p=document.createElement("span");mxUtils.write(p," "+mxResources.get("includeCopyOfMyDiagram"));a.appendChild(p);mxEvent.addListener(p,"click",function(b){l.checked=!l.checked;mxEvent.consume(b)});c.appendChild(a);a=document.createElement("div");mxUtils.write(a,mxResources.get("feedback"));c.appendChild(a);var q=document.createElement("textarea");q.style.resize="none";q.style.width="600px";q.style.height="140px";q.style.marginTop="6px";q.setAttribute("placeholder",mxResources.get("commentsNotes"));
+c.appendChild(q);a=document.createElement("div");a.style.marginTop="26px";a.style.textAlign="right";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst?(a.appendChild(p),a.appendChild(k)):(a.appendChild(k),a.appendChild(p));c.appendChild(a);this.container=c};FeedbackDialog.maxAttachmentSize=1E6;
 var RevisionDialog=function(b,c,a){var e=document.createElement("div"),k=document.createElement("h3");k.style.marginTop="0px";mxUtils.write(k,mxResources.get("revisionHistory"));e.appendChild(k);var f=document.createElement("div");f.style.position="absolute";f.style.overflow="auto";f.style.width="170px";f.style.height="378px";e.appendChild(f);var l=document.createElement("div");l.style.position="absolute";l.style.border="1px solid lightGray";l.style.left="199px";l.style.width="470px";l.style.height=
-"376px";l.style.overflow="hidden";mxEvent.disableContextMenu(l);e.appendChild(l);var q=new Graph(l);q.setTooltips(!1);q.setEnabled(!1);q.setPanning(!0);q.panningHandler.ignoreCell=!0;q.panningHandler.useLeftButtonForPanning=!0;q.minFitScale=null;q.maxFitScale=null;q.centerZoom=!0;var p=0,u=null,d=0,g=q.getGlobalVariable;q.getGlobalVariable=function(b){return"page"==b&&null!=u&&null!=u[d]?u[d].getAttribute("name"):"pagenumber"==b?d+1:g.apply(this,arguments)};q.getLinkForCell=function(){return null};
-Editor.MathJaxRender&&q.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a,d){b.editor.graph.mathEnabled&&Editor.MathJaxRender(q.container)}));var m=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),v=b.getCurrentFile(),t=null,y=null,B=null,n=null,x=mxUtils.button("",function(){null!=B&&q.zoomIn()});x.className="geSprite geSprite-zoomin";x.setAttribute("title",
-mxResources.get("zoomIn"));x.style.outline="none";x.style.border="none";x.style.margin="2px";x.setAttribute("disabled","disabled");mxUtils.setOpacity(x,20);var z=mxUtils.button("",function(){null!=B&&q.zoomOut()});z.className="geSprite geSprite-zoomout";z.setAttribute("title",mxResources.get("zoomOut"));z.style.outline="none";z.style.border="none";z.style.margin="2px";z.setAttribute("disabled","disabled");mxUtils.setOpacity(z,20);var A=mxUtils.button("",function(){null!=B&&(q.maxFitScale=8,q.fit(8),
-q.center())});A.className="geSprite geSprite-fit";A.setAttribute("title",mxResources.get("fit"));A.style.outline="none";A.style.border="none";A.style.margin="2px";A.setAttribute("disabled","disabled");mxUtils.setOpacity(A,20);var F=mxUtils.button("",function(){null!=B&&(q.zoomActual(),q.center())});F.className="geSprite geSprite-actualsize";F.setAttribute("title",mxResources.get("actualSize"));F.style.outline="none";F.style.border="none";F.style.margin="2px";F.setAttribute("disabled","disabled");
-mxUtils.setOpacity(F,20);var E=document.createElement("div");E.style.position="absolute";E.style.textAlign="right";E.style.color="gray";E.style.marginTop="10px";E.style.backgroundColor="transparent";E.style.top="440px";E.style.right="32px";E.style.maxWidth="380px";E.style.cursor="default";var G=mxUtils.button(mxResources.get("download"),function(){if(null!=B){var a=b.getCurrentFile(),a=null!=a&&null!=a.getTitle()?a.getTitle():b.defaultFilename,d=mxUtils.getXml(B.documentElement);b.isLocalFileSave()?
-b.saveLocalFile(d,a,"text/xml"):(d="undefined"===typeof pako?"&xml="+encodeURIComponent(d):"&data="+encodeURIComponent(b.editor.graph.compress(d)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&format=xml"+d)).simulate(document,"_blank"))}});G.className="geBtn";G.setAttribute("disabled","disabled");var H=mxUtils.button(mxResources.get("restore"),function(){null!=B&&null!=n&&b.confirm(mxResources.get("areYouSure"),function(){null!=a?a(n):b.spinner.spin(document.body,mxResources.get("restoring"))&&
+"376px";l.style.overflow="hidden";mxEvent.disableContextMenu(l);e.appendChild(l);var p=new Graph(l);p.setTooltips(!1);p.setEnabled(!1);p.setPanning(!0);p.panningHandler.ignoreCell=!0;p.panningHandler.useLeftButtonForPanning=!0;p.minFitScale=null;p.maxFitScale=null;p.centerZoom=!0;var q=0,u=null,d=0,g=p.getGlobalVariable;p.getGlobalVariable=function(b){return"page"==b&&null!=u&&null!=u[d]?u[d].getAttribute("name"):"pagenumber"==b?d+1:g.apply(this,arguments)};p.getLinkForCell=function(){return null};
+Editor.MathJaxRender&&p.addListener(mxEvent.SIZE,mxUtils.bind(this,function(a,d){b.editor.graph.mathEnabled&&Editor.MathJaxRender(p.container)}));var m=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),v=b.getCurrentFile(),t=null,y=null,A=null,n=null,x=mxUtils.button("",function(){null!=A&&p.zoomIn()});x.className="geSprite geSprite-zoomin";x.setAttribute("title",
+mxResources.get("zoomIn"));x.style.outline="none";x.style.border="none";x.style.margin="2px";x.setAttribute("disabled","disabled");mxUtils.setOpacity(x,20);var z=mxUtils.button("",function(){null!=A&&p.zoomOut()});z.className="geSprite geSprite-zoomout";z.setAttribute("title",mxResources.get("zoomOut"));z.style.outline="none";z.style.border="none";z.style.margin="2px";z.setAttribute("disabled","disabled");mxUtils.setOpacity(z,20);var B=mxUtils.button("",function(){null!=A&&(p.maxFitScale=8,p.fit(8),
+p.center())});B.className="geSprite geSprite-fit";B.setAttribute("title",mxResources.get("fit"));B.style.outline="none";B.style.border="none";B.style.margin="2px";B.setAttribute("disabled","disabled");mxUtils.setOpacity(B,20);var F=mxUtils.button("",function(){null!=A&&(p.zoomActual(),p.center())});F.className="geSprite geSprite-actualsize";F.setAttribute("title",mxResources.get("actualSize"));F.style.outline="none";F.style.border="none";F.style.margin="2px";F.setAttribute("disabled","disabled");
+mxUtils.setOpacity(F,20);var E=document.createElement("div");E.style.position="absolute";E.style.textAlign="right";E.style.color="gray";E.style.marginTop="10px";E.style.backgroundColor="transparent";E.style.top="440px";E.style.right="32px";E.style.maxWidth="380px";E.style.cursor="default";var G=mxUtils.button(mxResources.get("download"),function(){if(null!=A){var a=b.getCurrentFile(),a=null!=a&&null!=a.getTitle()?a.getTitle():b.defaultFilename,d=mxUtils.getXml(A.documentElement);b.isLocalFileSave()?
+b.saveLocalFile(d,a,"text/xml"):(d="undefined"===typeof pako?"&xml="+encodeURIComponent(d):"&data="+encodeURIComponent(b.editor.graph.compress(d)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&format=xml"+d)).simulate(document,"_blank"))}});G.className="geBtn";G.setAttribute("disabled","disabled");var H=mxUtils.button(mxResources.get("restore"),function(){null!=A&&null!=n&&b.confirm(mxResources.get("areYouSure"),function(){null!=a?a(n):b.spinner.spin(document.body,mxResources.get("restoring"))&&
 v.save(!0,function(a){b.spinner.stop();b.replaceFileData(n);b.hideDialog()},function(a){b.spinner.stop();b.editor.setStatus("");b.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)})})});H.className="geBtn";H.setAttribute("disabled","disabled");var D=document.createElement("select");D.setAttribute("disabled","disabled");D.style.maxWidth="80px";D.style.position="relative";D.style.top="-2px";D.style.verticalAlign="bottom";D.style.marginRight="6px";D.style.display="none";var K=null;mxEvent.addListener(D,
-"change",function(b){null!=K&&(K(b),mxEvent.consume(b))});var I=mxUtils.button(mxResources.get("open"),function(){null!=B&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(B.documentElement)),b.openLink(b.getUrl(),null,!0))});I.className="geBtn";I.setAttribute("disabled","disabled");null!=a&&(I.style.display="none");var C=mxUtils.button(mxResources.get("show"),function(){null!=y&&b.openLink(y.getUrl(D.selectedIndex))});C.className="geBtn gePrimaryBtn";
+"change",function(b){null!=K&&(K(b),mxEvent.consume(b))});var I=mxUtils.button(mxResources.get("open"),function(){null!=A&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(A.documentElement)),b.openLink(b.getUrl(),null,!0))});I.className="geBtn";I.setAttribute("disabled","disabled");null!=a&&(I.style.display="none");var C=mxUtils.button(mxResources.get("show"),function(){null!=y&&b.openLink(y.getUrl(D.selectedIndex))});C.className="geBtn gePrimaryBtn";
 C.setAttribute("disabled","disabled");null!=a&&(C.style.display="none",H.className="geBtn gePrimaryBtn");k=document.createElement("div");k.style.position="absolute";k.style.top="482px";k.style.width="640px";k.style.textAlign="right";var J=document.createElement("div");J.className="geToolbarContainer";J.style.backgroundColor="transparent";J.style.padding="2px";J.style.border="none";J.style.left="199px";J.style.top="442px";var M=null;if(null!=c&&0<c.length){l.style.cursor="move";var O=document.createElement("table");
-O.style.border="1px solid lightGray";O.style.borderCollapse="collapse";O.style.borderSpacing="0px";O.style.width="100%";var T=document.createElement("tbody"),U=(new Date).toDateString();null!=b.currentPage&&null!=b.pages&&(p=mxUtils.indexOf(b.pages,b.currentPage));for(var V=c.length-1;0<=V;V--){var W=function(a){var g=new Date(a.modifiedDate),e=null;if(0<=g.getTime()){var f=function(c){m.stop();var t=mxUtils.parseXml(c),y=b.editor.extractGraphModel(t.documentElement,!0);if(null!=y){var f=function(a){null!=
-a&&(a=k(mxUtils.parseXml(b.editor.graph.decompress(mxUtils.getTextContent(a))).documentElement));return a},k=function(b){var a=b.getAttribute("background");if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";l.style.backgroundColor=a;(new mxCodec(b.ownerDocument)).decode(b,q.getModel());q.maxFitScale=1;q.fit(8);q.center();return b};D.style.display="none";D.innerHTML="";B=t;n=c;u=parseSelectFunction=null;d=0;if("mxfile"==y.nodeName){t=y.getElementsByTagName("diagram");u=[];for(c=0;c<t.length;c++)u.push(t[c]);
-d=Math.min(p,u.length-1);0<u.length&&f(u[d]);if(1<u.length)for(D.removeAttribute("disabled"),D.style.display="",c=0;c<u.length;c++)t=document.createElement("option"),mxUtils.write(t,u[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),t.setAttribute("value",c),c==d&&t.setAttribute("selected","selected"),D.appendChild(t);K=function(){try{var a=parseInt(D.value);f(u[a]);d=p=a}catch(L){D.value=p,b.handleError(L)}}}else k(y);c=a.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0,
-20)+"...");E.innerHTML="";mxUtils.write(E,(null!=c?c+" ":"")+g.toLocaleDateString()+" "+g.toLocaleTimeString());E.setAttribute("title",e.getAttribute("title"));x.removeAttribute("disabled");z.removeAttribute("disabled");A.removeAttribute("disabled");F.removeAttribute("disabled");null!=v&&v.isRestricted()||(b.editor.graph.isEnabled()&&H.removeAttribute("disabled"),G.removeAttribute("disabled"),C.removeAttribute("disabled"),I.removeAttribute("disabled"));mxUtils.setOpacity(x,60);mxUtils.setOpacity(z,
-60);mxUtils.setOpacity(A,60);mxUtils.setOpacity(F,60)}else D.style.display="none",D.innerHTML="",E.innerHTML="",mxUtils.write(E,mxResources.get("errorLoadingFile"))},e=document.createElement("tr");e.style.borderBottom="1px solid lightGray";e.style.fontSize="12px";e.style.cursor="pointer";var k=document.createElement("td");k.style.padding="6px";k.style.whiteSpace="nowrap";a==c[c.length-1]?mxUtils.write(k,mxResources.get("current")):g.toDateString()===U?mxUtils.write(k,g.toLocaleTimeString()):mxUtils.write(k,
-g.toLocaleDateString()+" "+g.toLocaleTimeString());e.appendChild(k);e.setAttribute("title",g.toLocaleDateString()+" "+g.toLocaleTimeString()+" "+b.formatFileSize(parseInt(a.fileSize))+(null!=a.lastModifyingUserName?" "+a.lastModifyingUserName:""));mxEvent.addListener(e,"click",function(b){y!=a&&(m.stop(),null!=t&&(t.style.backgroundColor=""),y=a,t=e,t.style.backgroundColor="#ebf2f9",n=B=null,E.removeAttribute("title"),E.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),l.style.backgroundColor=
-"#ffffff",q.getModel().clear(),H.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),x.setAttribute("disabled","disabled"),z.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),A.setAttribute("disabled","disabled"),I.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),mxUtils.setOpacity(x,20),mxUtils.setOpacity(z,20),mxUtils.setOpacity(A,20),mxUtils.setOpacity(F,20),m.spin(l),a.getXml(function(b){if(y==
+O.style.border="1px solid lightGray";O.style.borderCollapse="collapse";O.style.borderSpacing="0px";O.style.width="100%";var T=document.createElement("tbody"),U=(new Date).toDateString();null!=b.currentPage&&null!=b.pages&&(q=mxUtils.indexOf(b.pages,b.currentPage));for(var V=c.length-1;0<=V;V--){var W=function(a){var g=new Date(a.modifiedDate),e=null;if(0<=g.getTime()){var f=function(c){m.stop();var t=mxUtils.parseXml(c),y=b.editor.extractGraphModel(t.documentElement,!0);if(null!=y){var f=function(a){null!=
+a&&(a=k(mxUtils.parseXml(b.editor.graph.decompress(mxUtils.getTextContent(a))).documentElement));return a},k=function(b){var a=b.getAttribute("background");if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";l.style.backgroundColor=a;(new mxCodec(b.ownerDocument)).decode(b,p.getModel());p.maxFitScale=1;p.fit(8);p.center();return b};D.style.display="none";D.innerHTML="";A=t;n=c;u=parseSelectFunction=null;d=0;if("mxfile"==y.nodeName){t=y.getElementsByTagName("diagram");u=[];for(c=0;c<t.length;c++)u.push(t[c]);
+d=Math.min(q,u.length-1);0<u.length&&f(u[d]);if(1<u.length)for(D.removeAttribute("disabled"),D.style.display="",c=0;c<u.length;c++)t=document.createElement("option"),mxUtils.write(t,u[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),t.setAttribute("value",c),c==d&&t.setAttribute("selected","selected"),D.appendChild(t);K=function(){try{var a=parseInt(D.value);f(u[a]);d=q=a}catch(L){D.value=q,b.handleError(L)}}}else k(y);c=a.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0,
+20)+"...");E.innerHTML="";mxUtils.write(E,(null!=c?c+" ":"")+g.toLocaleDateString()+" "+g.toLocaleTimeString());E.setAttribute("title",e.getAttribute("title"));x.removeAttribute("disabled");z.removeAttribute("disabled");B.removeAttribute("disabled");F.removeAttribute("disabled");null!=v&&v.isRestricted()||(b.editor.graph.isEnabled()&&H.removeAttribute("disabled"),G.removeAttribute("disabled"),C.removeAttribute("disabled"),I.removeAttribute("disabled"));mxUtils.setOpacity(x,60);mxUtils.setOpacity(z,
+60);mxUtils.setOpacity(B,60);mxUtils.setOpacity(F,60)}else D.style.display="none",D.innerHTML="",E.innerHTML="",mxUtils.write(E,mxResources.get("errorLoadingFile"))},e=document.createElement("tr");e.style.borderBottom="1px solid lightGray";e.style.fontSize="12px";e.style.cursor="pointer";var k=document.createElement("td");k.style.padding="6px";k.style.whiteSpace="nowrap";a==c[c.length-1]?mxUtils.write(k,mxResources.get("current")):g.toDateString()===U?mxUtils.write(k,g.toLocaleTimeString()):mxUtils.write(k,
+g.toLocaleDateString()+" "+g.toLocaleTimeString());e.appendChild(k);e.setAttribute("title",g.toLocaleDateString()+" "+g.toLocaleTimeString()+" "+b.formatFileSize(parseInt(a.fileSize))+(null!=a.lastModifyingUserName?" "+a.lastModifyingUserName:""));mxEvent.addListener(e,"click",function(b){y!=a&&(m.stop(),null!=t&&(t.style.backgroundColor=""),y=a,t=e,t.style.backgroundColor="#ebf2f9",n=A=null,E.removeAttribute("title"),E.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),l.style.backgroundColor=
+"#ffffff",p.getModel().clear(),H.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),x.setAttribute("disabled","disabled"),z.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),B.setAttribute("disabled","disabled"),I.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),mxUtils.setOpacity(x,20),mxUtils.setOpacity(z,20),mxUtils.setOpacity(B,20),mxUtils.setOpacity(F,20),m.spin(l),a.getXml(function(b){if(y==
 a)try{f(b)}catch(R){E.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+R.message)}},function(b){m.stop();D.style.display="none";D.innerHTML="";E.innerHTML="";mxUtils.write(E,mxResources.get("errorLoadingFile"))}),mxEvent.consume(b))});mxEvent.addListener(e,"dblclick",function(b){C.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(b)},!1);T.appendChild(e)}return e}(c[V]);null!=W&&V==c.length-1&&(M=W)}O.appendChild(T);
 f.appendChild(O)}else null==v||null==b.drive&&v.constructor==window.DriveFile||null==b.dropbox&&v.constructor==window.DropboxFile?(l.style.display="none",J.style.display="none",mxUtils.write(f,mxResources.get("notAvailable"))):(l.style.display="none",J.style.display="none",mxUtils.write(f,mxResources.get("noRevisions")));this.init=function(){null!=M&&M.click()};f=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});f.className="geBtn";J.appendChild(D);J.appendChild(x);J.appendChild(z);
-J.appendChild(F);J.appendChild(A);b.editor.cancelFirst?(k.appendChild(f),k.appendChild(G),k.appendChild(I),k.appendChild(H),k.appendChild(C)):(k.appendChild(G),k.appendChild(I),k.appendChild(H),k.appendChild(C),k.appendChild(f));e.appendChild(k);e.appendChild(J);e.appendChild(E);this.container=e},DraftDialog=function(b,c,a,e,k,f,l,q){var p=document.createElement("div"),u=document.createElement("div");u.style.marginTop="0px";u.style.whiteSpace="nowrap";u.style.overflow="auto";mxUtils.write(u,c);p.appendChild(u);
-var d=document.createElement("div");d.style.position="absolute";d.style.border="1px solid lightGray";d.style.marginTop="10px";d.style.width="640px";d.style.top="46px";d.style.bottom="74px";d.style.overflow="hidden";mxEvent.disableContextMenu(d);p.appendChild(d);var g=new Graph(d);g.setEnabled(!1);g.setPanning(!0);g.panningHandler.ignoreCell=!0;g.panningHandler.useLeftButtonForPanning=!0;g.minFitScale=null;g.maxFitScale=null;g.centerZoom=!0;c=mxUtils.parseXml(a);var m=b.editor.extractGraphModel(c.documentElement,
+J.appendChild(F);J.appendChild(B);b.editor.cancelFirst?(k.appendChild(f),k.appendChild(G),k.appendChild(I),k.appendChild(H),k.appendChild(C)):(k.appendChild(G),k.appendChild(I),k.appendChild(H),k.appendChild(C),k.appendChild(f));e.appendChild(k);e.appendChild(J);e.appendChild(E);this.container=e},DraftDialog=function(b,c,a,e,k,f,l,p){var q=document.createElement("div"),u=document.createElement("div");u.style.marginTop="0px";u.style.whiteSpace="nowrap";u.style.overflow="auto";mxUtils.write(u,c);q.appendChild(u);
+var d=document.createElement("div");d.style.position="absolute";d.style.border="1px solid lightGray";d.style.marginTop="10px";d.style.width="640px";d.style.top="46px";d.style.bottom="74px";d.style.overflow="hidden";mxEvent.disableContextMenu(d);q.appendChild(d);var g=new Graph(d);g.setEnabled(!1);g.setPanning(!0);g.panningHandler.ignoreCell=!0;g.panningHandler.useLeftButtonForPanning=!0;g.minFitScale=null;g.maxFitScale=null;g.centerZoom=!0;c=mxUtils.parseXml(a);var m=b.editor.extractGraphModel(c.documentElement,
 !0),v=0,t=null,y=g.getGlobalVariable;g.getGlobalVariable=function(b){return"page"==b&&null!=t&&null!=t[v]?t[v].getAttribute("name"):"pagenumber"==b?v+1:y.apply(this,arguments)};g.getLinkForCell=function(){return null};c=mxUtils.button("",function(){g.zoomIn()});c.className="geSprite geSprite-zoomin";c.setAttribute("title",mxResources.get("zoomIn"));c.style.outline="none";c.style.border="none";c.style.margin="2px";mxUtils.setOpacity(c,60);a=mxUtils.button("",function(){g.zoomOut()});a.className="geSprite geSprite-zoomout";
-a.setAttribute("title",mxResources.get("zoomOut"));a.style.outline="none";a.style.border="none";a.style.margin="2px";mxUtils.setOpacity(a,60);u=mxUtils.button("",function(){g.maxFitScale=8;g.fit(8);g.center()});u.className="geSprite geSprite-fit";u.setAttribute("title",mxResources.get("fit"));u.style.outline="none";u.style.border="none";u.style.margin="2px";mxUtils.setOpacity(u,60);var B=mxUtils.button("",function(){g.zoomActual();g.center()});B.className="geSprite geSprite-actualsize";B.setAttribute("title",
-mxResources.get("actualSize"));B.style.outline="none";B.style.border="none";B.style.margin="2px";mxUtils.setOpacity(B,60);k=mxUtils.button(l||mxResources.get("discard"),k);k.className="geBtn";var n=document.createElement("select");n.style.maxWidth="80px";n.style.position="relative";n.style.top="-2px";n.style.verticalAlign="bottom";n.style.marginRight="6px";n.style.display="none";e=mxUtils.button(f||mxResources.get("edit"),e);e.className="geBtn gePrimaryBtn";f=document.createElement("div");f.style.position=
+a.setAttribute("title",mxResources.get("zoomOut"));a.style.outline="none";a.style.border="none";a.style.margin="2px";mxUtils.setOpacity(a,60);u=mxUtils.button("",function(){g.maxFitScale=8;g.fit(8);g.center()});u.className="geSprite geSprite-fit";u.setAttribute("title",mxResources.get("fit"));u.style.outline="none";u.style.border="none";u.style.margin="2px";mxUtils.setOpacity(u,60);var A=mxUtils.button("",function(){g.zoomActual();g.center()});A.className="geSprite geSprite-actualsize";A.setAttribute("title",
+mxResources.get("actualSize"));A.style.outline="none";A.style.border="none";A.style.margin="2px";mxUtils.setOpacity(A,60);k=mxUtils.button(l||mxResources.get("discard"),k);k.className="geBtn";var n=document.createElement("select");n.style.maxWidth="80px";n.style.position="relative";n.style.top="-2px";n.style.verticalAlign="bottom";n.style.marginRight="6px";n.style.display="none";e=mxUtils.button(f||mxResources.get("edit"),e);e.className="geBtn gePrimaryBtn";f=document.createElement("div");f.style.position=
 "absolute";f.style.bottom="30px";f.style.width="640px";f.style.textAlign="right";l=document.createElement("div");l.className="geToolbarContainer";l.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function a(b){if(null!=b){var a=b.getAttribute("background");if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";d.style.backgroundColor=a;(new mxCodec(b.ownerDocument)).decode(b,g.getModel());g.maxFitScale=
 1;g.fit(8);g.center()}}function c(d){null!=d&&(d=a(mxUtils.parseXml(b.editor.graph.decompress(mxUtils.getTextContent(d))).documentElement));return d}mxEvent.addListener(n,"change",function(b){v=parseInt(n.value);c(t[v]);mxEvent.consume(b)});if("mxfile"==m.nodeName){var e=m.getElementsByTagName("diagram");t=[];for(var y=0;y<e.length;y++)t.push(e[y]);0<t.length&&c(t[v]);if(1<t.length)for(n.style.display="",y=0;y<t.length;y++)e=document.createElement("option"),mxUtils.write(e,t[y].getAttribute("name")||
-mxResources.get("pageWithNumber",[y+1])),e.setAttribute("value",y),y==v&&e.setAttribute("selected","selected"),n.appendChild(e)}else a(m)};l.appendChild(n);l.appendChild(c);l.appendChild(a);l.appendChild(B);l.appendChild(u);c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});c.className="geBtn";q=null!=q?mxUtils.button(mxResources.get("ignore"),q):null;null!=q&&(q.className="geBtn");b.editor.cancelFirst?(f.appendChild(c),null!=q&&f.appendChild(q),f.appendChild(k),f.appendChild(e)):
-(f.appendChild(e),f.appendChild(k),null!=q&&f.appendChild(q),f.appendChild(c));p.appendChild(f);p.appendChild(l);this.container=p},FindWindow=function(b,c,a,e,k){function f(b,a,d){if("object"===typeof a.value&&null!=a.value.attributes){a=a.value.attributes;for(var g=0;g<a.length;g++)if("label"!=a[g].nodeName){var c=mxUtils.trim(a[g].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==b&&c.substring(0,d.length)===d||null!=b&&b.test(c))return!0}}return!1}function l(){var b=p.model.getDescendants(p.model.getRoot()),
-a=m.value.toLowerCase(),g=v.checked?new RegExp(a):null,c=null;u!=a&&(u=a,d=null);var e=null==d;if(0<a.length)for(var t=0;t<b.length;t++){var k=p.view.getState(b[t]);if(null!=k&&null!=k.cell.value&&(e||null==c)&&(p.model.isVertex(k.cell)||p.model.isEdge(k.cell))&&(p.isHtmlLabel(k.cell)?(y.innerHTML=p.getLabel(k.cell),label=mxUtils.extractTextWithWhitespace([y])):label=p.getLabel(k.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),null==g&&(label.substring(0,a.length)===
-a||f(g,k.cell,a))||null!=g&&(g.test(label)||f(g,k.cell,a))))if(e){c=k;break}else null==c&&(c=k);e=e||k==d}null!=c?(d=c,p.scrollCellToVisible(d.cell),p.isEnabled()?p.setSelectionCell(d.cell):p.highlightCell(d.cell)):p.isEnabled()&&p.clearSelection();return 0==a.length||null!=c}var q=b.actions.get("find"),p=b.editor.graph,u=null,d=null,g=document.createElement("div");g.style.userSelect="none";g.style.overflow="hidden";g.style.padding="10px";g.style.height="100%";var m=document.createElement("input");
+mxResources.get("pageWithNumber",[y+1])),e.setAttribute("value",y),y==v&&e.setAttribute("selected","selected"),n.appendChild(e)}else a(m)};l.appendChild(n);l.appendChild(c);l.appendChild(a);l.appendChild(A);l.appendChild(u);c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});c.className="geBtn";p=null!=p?mxUtils.button(mxResources.get("ignore"),p):null;null!=p&&(p.className="geBtn");b.editor.cancelFirst?(f.appendChild(c),null!=p&&f.appendChild(p),f.appendChild(k),f.appendChild(e)):
+(f.appendChild(e),f.appendChild(k),null!=p&&f.appendChild(p),f.appendChild(c));q.appendChild(f);q.appendChild(l);this.container=q},FindWindow=function(b,c,a,e,k){function f(b,a,d){if("object"===typeof a.value&&null!=a.value.attributes){a=a.value.attributes;for(var g=0;g<a.length;g++)if("label"!=a[g].nodeName){var c=mxUtils.trim(a[g].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==b&&c.substring(0,d.length)===d||null!=b&&b.test(c))return!0}}return!1}function l(){var b=q.model.getDescendants(q.model.getRoot()),
+a=m.value.toLowerCase(),g=v.checked?new RegExp(a):null,c=null;u!=a&&(u=a,d=null);var e=null==d;if(0<a.length)for(var t=0;t<b.length;t++){var k=q.view.getState(b[t]);if(null!=k&&null!=k.cell.value&&(e||null==c)&&(q.model.isVertex(k.cell)||q.model.isEdge(k.cell))&&(q.isHtmlLabel(k.cell)?(y.innerHTML=q.getLabel(k.cell),label=mxUtils.extractTextWithWhitespace([y])):label=q.getLabel(k.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),null==g&&(label.substring(0,a.length)===
+a||f(g,k.cell,a))||null!=g&&(g.test(label)||f(g,k.cell,a))))if(e){c=k;break}else null==c&&(c=k);e=e||k==d}null!=c?(d=c,q.scrollCellToVisible(d.cell),q.isEnabled()?q.setSelectionCell(d.cell):q.highlightCell(d.cell)):q.isEnabled()&&q.clearSelection();return 0==a.length||null!=c}var p=b.actions.get("find"),q=b.editor.graph,u=null,d=null,g=document.createElement("div");g.style.userSelect="none";g.style.overflow="hidden";g.style.padding="10px";g.style.height="100%";var m=document.createElement("input");
 m.setAttribute("placeholder",mxResources.get("find"));m.setAttribute("type","text");m.style.marginTop="4px";m.style.marginBottom="6px";m.style.width="200px";m.style.fontSize="12px";m.style.borderRadius="4px";m.style.padding="6px";g.appendChild(m);mxUtils.br(g);var v=document.createElement("input");v.setAttribute("type","checkbox");v.style.marginRight="4px";g.appendChild(v);mxUtils.write(g,mxResources.get("regularExpression"));var t=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000088250");
-t.style.position="relative";t.style.marginLeft="6px";t.style.top="-1px";g.appendChild(t);var y=document.createElement("div");mxUtils.br(g);t=mxUtils.button(mxResources.get("reset"),function(){m.value="";m.style.backgroundColor="";u=d=null;m.focus()});t.setAttribute("title",mxResources.get("reset"));t.style.marginTop="6px";t.style.marginRight="4px";t.className="geBtn";g.appendChild(t);t=mxUtils.button(mxResources.get("find"),function(){try{m.style.backgroundColor=l()?"":"#ffcfcf"}catch(B){b.handleError(B)}});
-t.setAttribute("title",mxResources.get("find")+" (Enter)");t.style.marginTop="6px";t.className="geBtn gePrimaryBtn";g.appendChild(t);mxEvent.addListener(m,"keyup",function(b){if(91==b.keyCode||17==b.keyCode)mxEvent.consume(b);else if(27==b.keyCode)q.funct();else if(u!=m.value.toLowerCase()||13==b.keyCode)try{m.style.backgroundColor=l()?"":"#ffcfcf"}catch(n){m.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(g,"keydown",function(a){70==a.keyCode&&b.keyHandler.isControlDown(a)&&!mxEvent.isShiftDown(a)&&
-(q.funct(),mxEvent.consume(a))});this.window=new mxWindow(mxResources.get("find"),g,c,a,e,k,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)):p.container.focus()}))},TagsWindow=function(b,c,a,e,k){var f=
-b.editor.graph,l="tags",q=document.createElement("div");q.style.userSelect="none";q.style.overflow="hidden";q.style.padding="10px";q.style.height="100%";var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("allTags"));p.setAttribute("type","text");p.style.marginTop="4px";p.style.width="260px";p.style.fontSize="12px";p.style.borderRadius="4px";p.style.padding="6px";q.appendChild(p);if(!b.isOffline()||mxClient.IS_CHROMEAPP){p.style.width="240px";var u=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000046966");
-u.firstChild.style.marginBottom="6px";u.style.marginLeft="6px";q.appendChild(u)}mxEvent.addListener(p,"dblclick",function(){var a=new FilenameDialog(b,l,mxResources.get("ok"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&(l=b)}),mxResources.get("enterPropertyName"));b.showDialog(a.container,300,80,!0,!0);a.init()});p.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(q);u=mxUtils.button(mxResources.get("hide"),function(){var b=f.getCellsForTags(p.value.split(" "),void 0,
-l);f.setCellsVisible(b,!1)});u.setAttribute("title",mxResources.get("hide"));u.style.marginTop="8px";u.style.marginRight="4px";u.className="geBtn";q.appendChild(u);u=mxUtils.button(mxResources.get("show"),function(){var b=f.getCellsForTags(p.value.split(" "),void 0,l);f.setCellsVisible(b,!0);if(f.isEnabled())f.setSelectionCells(b);else for(var a=0;a<b.length;a++)f.highlightCell(b[a])});u.setAttribute("title",mxResources.get("show"));u.style.marginTop="8px";u.style.marginRight="4px";u.className="geBtn";
-q.appendChild(u);var d=b.actions.get("tags"),u=mxUtils.button(mxResources.get("close"),function(){d.funct()});u.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");u.style.marginTop="8px";u.className="geBtn gePrimaryBtn";q.appendChild(u);mxEvent.addListener(p,"keyup",function(b){13!=b.keyCode&&27!=b.keyCode||d.funct()});this.window=new mxWindow(mxResources.get("tags"),q,c,a,e,k,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);
-this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)):f.container.focus()}))},AuthDialog=function(b,c,a,e){var k=document.createElement("div");k.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("authorizationRequired"));
-var l="Unknown",q=document.createElement("img");q.setAttribute("border","0");q.setAttribute("align","absmiddle");q.style.marginRight="10px";c==b.drive?(l=mxResources.get("googleDrive"),q.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==b.dropbox?(l=mxResources.get("dropbox"),q.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==b.oneDrive?(l=mxResources.get("oneDrive"),q.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==b.gitHub?(l=mxResources.get("github"),q.src=IMAGE_PATH+"/github-logo-white.svg"):c==b.trello&&
-(l=mxResources.get("trello"),q.src=IMAGE_PATH+"/trello-logo-white.svg");b=document.createElement("p");mxUtils.write(b,mxResources.get("authorizeThisAppIn",[l]));var p=document.createElement("input");p.setAttribute("type","checkbox");l=mxUtils.button(mxResources.get("authorize"),function(){e(p.checked)});l.insertBefore(q,l.firstChild);l.style.marginTop="6px";l.className="geBigButton";k.appendChild(f);k.appendChild(b);k.appendChild(l);a&&(a=document.createElement("p"),a.style.marginTop="20px",a.appendChild(p),
-f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberMe")),a.appendChild(f),k.appendChild(a),p.checked=!0,p.defaultChecked=!0,mxEvent.addListener(f,"click",function(b){p.checked=!p.checked;mxEvent.consume(b)}));this.container=k},MoreShapesDialog=function(b,c,a){a=null!=a?a:b.sidebar.entries;var e=document.createElement("div"),k=[];if(null!=b.sidebar.customEntries)for(var f=0;f<b.sidebar.customEntries.length;f++){for(var l=b.sidebar.customEntries[f],q={title:b.getResource(l.title),
-entries:[]},p=0;p<l.entries.length;p++){var u=l.entries[p];q.entries.push({id:u.id,title:b.getResource(u.title),desc:b.getResource(u.desc),image:u.preview})}k.push(q)}for(f=0;f<a.length;f++)if(null==b.sidebar.enabledLibraries)k.push(a[f]);else{q={title:a[f].title,entries:[]};for(p=0;p<a[f].entries.length;p++)0<=mxUtils.indexOf(b.sidebar.enabledLibraries,a[f].entries[p].id)&&q.entries.push(a[f].entries[p]);0<q.entries.length&&k.push(q)}a=k;if(c){p=document.createElement("div");p.className="geDialogTitle";
-mxUtils.write(p,mxResources.get("shapes"));p.style.position="absolute";p.style.top="0px";p.style.left="0px";p.style.lineHeight="40px";p.style.height="40px";p.style.right="0px";mxClient.IS_QUIRKS&&(p.style.width="718px");var d=document.createElement("div"),g=document.createElement("div");d.style.position="absolute";d.style.top="40px";d.style.left="0px";d.style.width="202px";d.style.bottom="60px";d.style.overflow="auto";mxClient.IS_QUIRKS&&(d.style.height="437px",d.style.marginTop="1px");g.style.position=
-"absolute";g.style.left="202px";g.style.right="0px";g.style.top="40px";g.style.bottom="60px";g.style.overflow="auto";g.style.borderLeft="1px solid rgb(211, 211, 211)";g.style.textAlign="center";mxClient.IS_QUIRKS&&(g.style.width=parseInt(p.style.width)-202+"px",g.style.height=d.style.height,g.style.marginTop=d.style.marginTop);var m=null,v=[],t=document.createElement("div");t.style.position="relative";t.style.left="0px";t.style.right="0px";for(f=0;f<a.length;f++)(function(a){var c=t.cloneNode(!1);
+t.style.position="relative";t.style.marginLeft="6px";t.style.top="-1px";g.appendChild(t);var y=document.createElement("div");mxUtils.br(g);t=mxUtils.button(mxResources.get("reset"),function(){m.value="";m.style.backgroundColor="";u=d=null;m.focus()});t.setAttribute("title",mxResources.get("reset"));t.style.marginTop="6px";t.style.marginRight="4px";t.className="geBtn";g.appendChild(t);t=mxUtils.button(mxResources.get("find"),function(){try{m.style.backgroundColor=l()?"":"#ffcfcf"}catch(A){b.handleError(A)}});
+t.setAttribute("title",mxResources.get("find")+" (Enter)");t.style.marginTop="6px";t.className="geBtn gePrimaryBtn";g.appendChild(t);mxEvent.addListener(m,"keyup",function(b){if(91==b.keyCode||17==b.keyCode)mxEvent.consume(b);else if(27==b.keyCode)p.funct();else if(u!=m.value.toLowerCase()||13==b.keyCode)try{m.style.backgroundColor=l()?"":"#ffcfcf"}catch(n){m.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(g,"keydown",function(a){70==a.keyCode&&b.keyHandler.isControlDown(a)&&!mxEvent.isShiftDown(a)&&
+(p.funct(),mxEvent.consume(a))});this.window=new mxWindow(mxResources.get("find"),g,c,a,e,k,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)):q.container.focus()}))},TagsWindow=function(b,c,a,e,k){var f=
+b.editor.graph,l="tags",p=document.createElement("div");p.style.userSelect="none";p.style.overflow="hidden";p.style.padding="10px";p.style.height="100%";var q=document.createElement("input");q.setAttribute("placeholder",mxResources.get("allTags"));q.setAttribute("type","text");q.style.marginTop="4px";q.style.width="260px";q.style.fontSize="12px";q.style.borderRadius="4px";q.style.padding="6px";p.appendChild(q);if(!b.isOffline()||mxClient.IS_CHROMEAPP){q.style.width="240px";var u=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000046966");
+u.firstChild.style.marginBottom="6px";u.style.marginLeft="6px";p.appendChild(u)}mxEvent.addListener(q,"dblclick",function(){var a=new FilenameDialog(b,l,mxResources.get("ok"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&(l=b)}),mxResources.get("enterPropertyName"));b.showDialog(a.container,300,80,!0,!0);a.init()});q.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(p);u=mxUtils.button(mxResources.get("hide"),function(){var b=f.getCellsForTags(q.value.split(" "),void 0,
+l);f.setCellsVisible(b,!1)});u.setAttribute("title",mxResources.get("hide"));u.style.marginTop="8px";u.style.marginRight="4px";u.className="geBtn";p.appendChild(u);u=mxUtils.button(mxResources.get("show"),function(){var b=f.getCellsForTags(q.value.split(" "),void 0,l);f.setCellsVisible(b,!0);if(f.isEnabled())f.setSelectionCells(b);else for(var a=0;a<b.length;a++)f.highlightCell(b[a])});u.setAttribute("title",mxResources.get("show"));u.style.marginTop="8px";u.style.marginRight="4px";u.className="geBtn";
+p.appendChild(u);var d=b.actions.get("tags"),u=mxUtils.button(mxResources.get("close"),function(){d.funct()});u.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");u.style.marginTop="8px";u.className="geBtn gePrimaryBtn";p.appendChild(u);mxEvent.addListener(q,"keyup",function(b){13!=b.keyCode&&27!=b.keyCode||d.funct()});this.window=new mxWindow(mxResources.get("tags"),p,c,a,e,k,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);
+this.window.addListener("show",mxUtils.bind(this,function(){this.window.isVisible()?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)):f.container.focus()}))},AuthDialog=function(b,c,a,e){var k=document.createElement("div");k.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("authorizationRequired"));
+var l="Unknown",p=document.createElement("img");p.setAttribute("border","0");p.setAttribute("align","absmiddle");p.style.marginRight="10px";c==b.drive?(l=mxResources.get("googleDrive"),p.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==b.dropbox?(l=mxResources.get("dropbox"),p.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==b.oneDrive?(l=mxResources.get("oneDrive"),p.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==b.gitHub?(l=mxResources.get("github"),p.src=IMAGE_PATH+"/github-logo-white.svg"):c==b.trello&&
+(l=mxResources.get("trello"),p.src=IMAGE_PATH+"/trello-logo-white.svg");b=document.createElement("p");mxUtils.write(b,mxResources.get("authorizeThisAppIn",[l]));var q=document.createElement("input");q.setAttribute("type","checkbox");l=mxUtils.button(mxResources.get("authorize"),function(){e(q.checked)});l.insertBefore(p,l.firstChild);l.style.marginTop="6px";l.className="geBigButton";k.appendChild(f);k.appendChild(b);k.appendChild(l);a&&(a=document.createElement("p"),a.style.marginTop="20px",a.appendChild(q),
+f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberMe")),a.appendChild(f),k.appendChild(a),q.checked=!0,q.defaultChecked=!0,mxEvent.addListener(f,"click",function(b){q.checked=!q.checked;mxEvent.consume(b)}));this.container=k},MoreShapesDialog=function(b,c,a){a=null!=a?a:b.sidebar.entries;var e=document.createElement("div"),k=[];if(null!=b.sidebar.customEntries)for(var f=0;f<b.sidebar.customEntries.length;f++){for(var l=b.sidebar.customEntries[f],p={title:b.getResource(l.title),
+entries:[]},q=0;q<l.entries.length;q++){var u=l.entries[q];p.entries.push({id:u.id,title:b.getResource(u.title),desc:b.getResource(u.desc),image:u.preview})}k.push(p)}for(f=0;f<a.length;f++)if(null==b.sidebar.enabledLibraries)k.push(a[f]);else{p={title:a[f].title,entries:[]};for(q=0;q<a[f].entries.length;q++)0<=mxUtils.indexOf(b.sidebar.enabledLibraries,a[f].entries[q].id)&&p.entries.push(a[f].entries[q]);0<p.entries.length&&k.push(p)}a=k;if(c){q=document.createElement("div");q.className="geDialogTitle";
+mxUtils.write(q,mxResources.get("shapes"));q.style.position="absolute";q.style.top="0px";q.style.left="0px";q.style.lineHeight="40px";q.style.height="40px";q.style.right="0px";mxClient.IS_QUIRKS&&(q.style.width="718px");var d=document.createElement("div"),g=document.createElement("div");d.style.position="absolute";d.style.top="40px";d.style.left="0px";d.style.width="202px";d.style.bottom="60px";d.style.overflow="auto";mxClient.IS_QUIRKS&&(d.style.height="437px",d.style.marginTop="1px");g.style.position=
+"absolute";g.style.left="202px";g.style.right="0px";g.style.top="40px";g.style.bottom="60px";g.style.overflow="auto";g.style.borderLeft="1px solid rgb(211, 211, 211)";g.style.textAlign="center";mxClient.IS_QUIRKS&&(g.style.width=parseInt(q.style.width)-202+"px",g.style.height=d.style.height,g.style.marginTop=d.style.marginTop);var m=null,v=[],t=document.createElement("div");t.style.position="relative";t.style.left="0px";t.style.right="0px";for(f=0;f<a.length;f++)(function(a){var c=t.cloneNode(!1);
 c.style.fontWeight="bold";c.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";c.style.padding="6px 0px 6px 20px";mxUtils.write(c,a.title);d.appendChild(c);for(var n=0;n<a.entries.length;n++)(function(a){var c=t.cloneNode(!1);c.style.cursor="pointer";c.style.padding="4px 0px 4px 20px";var x=document.createElement("input");x.setAttribute("type","checkbox");x.checked=b.sidebar.isEntryVisible(a.id);x.defaultChecked=x.checked;c.appendChild(x);mxUtils.write(c," "+a.title);d.appendChild(c);var e=
 function(b){if(null==b||"INPUT"!=mxEvent.getSource(b).nodeName){g.style.textAlign="center";g.style.padding="0px";g.style.color="";g.innerHTML="";if(null!=a.desc){var d=document.createElement("pre");d.style.boxSizing="border-box";d.style.fontFamily="inherit";d.style.margin="20px";d.style.right="0px";d.style.textAlign="left";mxUtils.write(d,a.desc);g.appendChild(d)}null!=a.imageCallback?a.imageCallback(g):null!=a.image?g.innerHTML+='<img border="0" src="'+a.image+'"/>':null==a.desc&&(g.style.padding=
-"20px",g.style.color="rgb(179, 179, 179)",mxUtils.write(g,mxResources.get("noPreview")));null!=m&&(m.style.backgroundColor="");m=c;m.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=b&&mxEvent.consume(b)}};mxEvent.addListener(c,"click",e);mxEvent.addListener(c,"dblclick",function(b){x.checked=!x.checked;mxEvent.consume(b)});v.push(function(){return x.checked?a.id:null});0==f&&0==n&&e()})(a.entries[n])})(a[f]);e.style.padding="30px";e.appendChild(p);e.appendChild(d);e.appendChild(g);
-a=document.createElement("div");a.className="geDialogFooter";a.style.position="absolute";a.style.paddingRight="16px";a.style.color="gray";a.style.left="0px";a.style.right="0px";a.style.bottom="0px";a.style.height="60px";a.style.lineHeight="52px";mxClient.IS_QUIRKS&&(a.style.width=p.style.width,a.style.paddingTop="12px");var y=document.createElement("input");y.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)p=document.createElement("span"),p.style.paddingRight="20px",p.appendChild(y),
-mxUtils.write(p," "+mxResources.get("rememberThisSetting")),y.checked=!0,y.defaultChecked=!0,mxEvent.addListener(p,"click",function(b){mxEvent.getSource(b)!=y&&(y.checked=!y.checked,mxEvent.consume(b))}),mxClient.IS_QUIRKS&&(p.style.position="relative",p.style.top="-6px"),a.appendChild(p);p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();for(var a=[],d=0;d<v.length;d++){var g=v[d].apply(this,
-arguments);null!=g&&a.push(g)}b.sidebar.showEntries(a.join(";"),y.checked,!0)});c.className="geBtn gePrimaryBtn"}else{var B=document.createElement("table"),p=document.createElement("tbody");e.style.height="100%";e.style.overflow="auto";q=document.createElement("tr");B.style.width="100%";c=document.createElement("td");var k=document.createElement("td"),l=document.createElement("td"),n=mxUtils.bind(this,function(a,d,g){var c=document.createElement("input");c.type="checkbox";B.appendChild(c);c.checked=
-b.sidebar.isEntryVisible(g);var m=document.createElement("span");mxUtils.write(m,d);d=document.createElement("div");d.style.display="block";d.appendChild(c);d.appendChild(m);mxEvent.addListener(m,"click",function(b){c.checked=!c.checked;mxEvent.consume(b)});a.appendChild(d);return function(){return c.checked?g:null}});q.appendChild(c);q.appendChild(k);q.appendChild(l);p.appendChild(q);B.appendChild(p);for(var v=[],x=0,f=0;f<a.length;f++)for(p=0;p<a[f].entries.length;p++)x++;for(var z=[c,k,l],A=0,
-f=0;f<a.length;f++)(function(b){for(var a=0;a<b.entries.length;a++){var d=b.entries[a];v.push(n(z[Math.floor(A/(x/3))],d.title,d.id));A++}})(a[f]);e.appendChild(B);a=document.createElement("div");a.style.marginTop="18px";a.style.textAlign="center";y=document.createElement("input");isLocalStorage&&(y.setAttribute("type","checkbox"),y.checked=!0,y.defaultChecked=!0,a.appendChild(y),p=document.createElement("span"),mxUtils.write(p," "+mxResources.get("rememberThisSetting")),a.appendChild(p),mxEvent.addListener(p,
-"click",function(b){y.checked=!y.checked;mxEvent.consume(b)}));e.appendChild(a);p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){for(var a=["search"],d=0;d<v.length;d++){var g=v[d].apply(this,arguments);null!=g&&a.push(g)}b.sidebar.showEntries(0<a.length?a.join(";"):"",y.checked);b.hideDialog()});c.className="geBtn gePrimaryBtn";a=document.createElement("div");a.style.marginTop="26px";a.style.textAlign=
-"right"}b.editor.cancelFirst?(a.appendChild(p),a.appendChild(c)):(a.appendChild(c),a.appendChild(p));e.appendChild(a);this.container=e},PluginsDialog=function(b){function c(){if(0==k.length)e.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{e.innerHTML="";for(var a=0;a<k.length;a++){var g=document.createElement("span");g.style.whiteSpace="nowrap";var m=document.createElement("span");m.className="geSprite geSprite-delete";m.style.position="relative";m.style.cursor="pointer";m.style.top=
+"20px",g.style.color="rgb(179, 179, 179)",mxUtils.write(g,mxResources.get("noPreview")));null!=m&&(m.style.backgroundColor="");m=c;m.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=b&&mxEvent.consume(b)}};mxEvent.addListener(c,"click",e);mxEvent.addListener(c,"dblclick",function(b){x.checked=!x.checked;mxEvent.consume(b)});v.push(function(){return x.checked?a.id:null});0==f&&0==n&&e()})(a.entries[n])})(a[f]);e.style.padding="30px";e.appendChild(q);e.appendChild(d);e.appendChild(g);
+a=document.createElement("div");a.className="geDialogFooter";a.style.position="absolute";a.style.paddingRight="16px";a.style.color="gray";a.style.left="0px";a.style.right="0px";a.style.bottom="0px";a.style.height="60px";a.style.lineHeight="52px";mxClient.IS_QUIRKS&&(a.style.width=q.style.width,a.style.paddingTop="12px");var y=document.createElement("input");y.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)q=document.createElement("span"),q.style.paddingRight="20px",q.appendChild(y),
+mxUtils.write(q," "+mxResources.get("rememberThisSetting")),y.checked=!0,y.defaultChecked=!0,mxEvent.addListener(q,"click",function(b){mxEvent.getSource(b)!=y&&(y.checked=!y.checked,mxEvent.consume(b))}),mxClient.IS_QUIRKS&&(q.style.position="relative",q.style.top="-6px"),a.appendChild(q);q=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});q.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();for(var a=[],d=0;d<v.length;d++){var g=v[d].apply(this,
+arguments);null!=g&&a.push(g)}b.sidebar.showEntries(a.join(";"),y.checked,!0)});c.className="geBtn gePrimaryBtn"}else{var A=document.createElement("table"),q=document.createElement("tbody");e.style.height="100%";e.style.overflow="auto";p=document.createElement("tr");A.style.width="100%";c=document.createElement("td");var k=document.createElement("td"),l=document.createElement("td"),n=mxUtils.bind(this,function(a,d,g){var c=document.createElement("input");c.type="checkbox";A.appendChild(c);c.checked=
+b.sidebar.isEntryVisible(g);var m=document.createElement("span");mxUtils.write(m,d);d=document.createElement("div");d.style.display="block";d.appendChild(c);d.appendChild(m);mxEvent.addListener(m,"click",function(b){c.checked=!c.checked;mxEvent.consume(b)});a.appendChild(d);return function(){return c.checked?g:null}});p.appendChild(c);p.appendChild(k);p.appendChild(l);q.appendChild(p);A.appendChild(q);for(var v=[],x=0,f=0;f<a.length;f++)for(q=0;q<a[f].entries.length;q++)x++;for(var z=[c,k,l],B=0,
+f=0;f<a.length;f++)(function(b){for(var a=0;a<b.entries.length;a++){var d=b.entries[a];v.push(n(z[Math.floor(B/(x/3))],d.title,d.id));B++}})(a[f]);e.appendChild(A);a=document.createElement("div");a.style.marginTop="18px";a.style.textAlign="center";y=document.createElement("input");isLocalStorage&&(y.setAttribute("type","checkbox"),y.checked=!0,y.defaultChecked=!0,a.appendChild(y),q=document.createElement("span"),mxUtils.write(q," "+mxResources.get("rememberThisSetting")),a.appendChild(q),mxEvent.addListener(q,
+"click",function(b){y.checked=!y.checked;mxEvent.consume(b)}));e.appendChild(a);q=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});q.className="geBtn";c=mxUtils.button(mxResources.get("apply"),function(){for(var a=["search"],d=0;d<v.length;d++){var g=v[d].apply(this,arguments);null!=g&&a.push(g)}b.sidebar.showEntries(0<a.length?a.join(";"):"",y.checked);b.hideDialog()});c.className="geBtn gePrimaryBtn";a=document.createElement("div");a.style.marginTop="26px";a.style.textAlign=
+"right"}b.editor.cancelFirst?(a.appendChild(q),a.appendChild(c)):(a.appendChild(c),a.appendChild(q));e.appendChild(a);this.container=e},PluginsDialog=function(b){function c(){if(0==k.length)e.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{e.innerHTML="";for(var a=0;a<k.length;a++){var g=document.createElement("span");g.style.whiteSpace="nowrap";var m=document.createElement("span");m.className="geSprite geSprite-delete";m.style.position="relative";m.style.cursor="pointer";m.style.top=
 "5px";m.style.marginRight="4px";m.style.display="inline-block";g.appendChild(m);mxUtils.write(g,k[a]);e.appendChild(g);mxUtils.br(e);mxEvent.addListener(m,"click",function(a){return function(){b.confirm(window.parent.mxResources.get("delete")+' "'+k[a]+'"?',function(){k.splice(a,1);c()})}}(a))}}}var a=document.createElement("div"),e=document.createElement("div");e.style.height="120px";e.style.overflow="auto";var k=mxSettings.getPlugins().slice();a.appendChild(e);c();var f=mxUtils.button(mxResources.get("add"),
 function(){var a="",g=urlParams.p;if(null!=g&&0<g.length){for(var m=g.split(";"),g=0;g<m.length;g++){var e=App.pluginRegistry[m[g]];null!=e&&(a+=e+";")}";"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1))}a=new FilenameDialog(b,a,mxResources.get("add"),function(a){if(null!=a&&0<a.length){m=a.split(";");for(a=0;a<m.length;a++){var b=m[a],d=App.pluginRegistry[b];null!=d&&(b=d);0<b.length&&0>mxUtils.indexOf(k,b)&&k.push(b)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");b.showDialog(a.container,
-300,80,!0,!0);a.init()});f.className="geBtn";var l=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});l.className="geBtn";var q=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(k);mxSettings.save();b.hideDialog();b.alert(mxResources.get("restartForChangeRequired"))});q.className="geBtn gePrimaryBtn";var p=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://desk.draw.io/support/solutions/articles/16000056430")});p.className="geBtn";b.isOffline()&&
-!mxClient.IS_CHROMEAPP&&(p.style.display="none");var u=document.createElement("div");u.style.marginTop="14px";u.style.textAlign="right";b.editor.cancelFirst?(u.appendChild(l),u.appendChild(p),u.appendChild(f),u.appendChild(q)):(u.appendChild(p),u.appendChild(f),u.appendChild(q),u.appendChild(l));a.appendChild(u);this.container=a},CropImageDialog=function(b,c,a){var e=document.createElement("div"),k=document.createElement("table"),f=document.createElement("tbody"),l=document.createElement("tr"),q=
-document.createElement("td");q.style.whiteSpace="nowrap";q.setAttribute("colspan","2");mxUtils.write(q,mxResources.get("loading")+"...");l.appendChild(q);f.appendChild(l);var l=document.createElement("tr"),p=document.createElement("td"),u=document.createElement("td");k.style.paddingLeft="6px";mxUtils.write(p,mxResources.get("left")+":");var d=document.createElement("input");d.setAttribute("type","text");d.style.width="100px";d.value="0";this.init=function(){d.focus();d.select()};u.appendChild(d);
-l.appendChild(p);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("top")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.width="100px";g.value="0";u.appendChild(g);l.appendChild(p);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("right")+":");var m=
-document.createElement("input");m.setAttribute("type","text");m.style.width="100px";m.value="0";u.appendChild(m);l.appendChild(p);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("bottom")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value="0";u.appendChild(v);l.appendChild(p);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");
-p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("circle")+":");l.appendChild(p);var t=document.createElement("input");t.setAttribute("type","checkbox");u.appendChild(t);l.appendChild(u);f.appendChild(l);k.appendChild(f);e.appendChild(k);var k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()}),y=new Image,B=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var c=document.createElement("canvas"),x=c.getContext("2d"),e=y.width,
-A=y.height,f=parseInt(d.value),k=parseInt(g.value),e=Math.max(1,e-f-parseInt(m.value)),A=Math.max(1,A-k-parseInt(v.value));c.width=e;c.height=A;t.checked&&(x.fillStyle="#000000",x.arc(e/2,A/2,Math.min(e/2,A/2),0,2*Math.PI),x.fill(),x.globalCompositeOperation="source-in");x.drawImage(y,f,k,e,A,0,0,e,A);a(c.toDataURL())});B.setAttribute("disabled","disabled");y.onload=function(){B.removeAttribute("disabled");q.innerHTML="";mxUtils.write(q,mxResources.get("width")+": "+y.width+" "+mxResources.get("height")+
-": "+y.height)};y.src=c;mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&B.click()});c=document.createElement("div");c.style.marginTop="20px";c.style.textAlign="right";b.editor.cancelFirst?(c.appendChild(k),c.appendChild(B)):(c.appendChild(B),c.appendChild(k));e.appendChild(c);this.container=e},EditGeometryDialog=function(b,c){var a=b.editor.graph,e=1==c.length?a.getCellGeometry(c[0]):null,k=document.createElement("div"),f=document.createElement("table"),l=document.createElement("tbody"),
-q=document.createElement("tr"),p=document.createElement("td"),u=document.createElement("td");f.style.paddingLeft="6px";mxUtils.write(p,mxResources.get("relative")+":");var d=document.createElement("input");d.setAttribute("type","checkbox");null!=e&&e.relative&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);this.init=function(){d.focus()};u.appendChild(d);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");
-mxUtils.write(p,mxResources.get("left")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.width="100px";g.value=null!=e?e.x:"";u.appendChild(g);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("top")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.width="100px";m.value=null!=e?e.y:"";u.appendChild(m);q.appendChild(p);
-q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("dx")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=e&&null!=e.offset?e.offset.x:"";u.appendChild(v);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("dy")+
-":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value=null!=e&&null!=e.offset?e.offset.y:"";u.appendChild(t);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("width")+":");var y=document.createElement("input");y.setAttribute("type","text");y.style.width="100px";y.value=null!=e?e.width:"";u.appendChild(y);q.appendChild(p);q.appendChild(u);
-l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("height")+":");var B=document.createElement("input");B.setAttribute("type","text");B.style.width="100px";B.value=null!=e?e.height:"";u.appendChild(B);q.appendChild(p);q.appendChild(u);l.appendChild(q);q=document.createElement("tr");p=document.createElement("td");u=document.createElement("td");mxUtils.write(p,mxResources.get("rotation")+":");var n=document.createElement("input");
-n.setAttribute("type","text");n.style.width="100px";n.value=1==c.length?mxUtils.getValue(a.getCellStyle(c[0]),mxConstants.STYLE_ROTATION,0):"";u.appendChild(n);q.appendChild(p);q.appendChild(u);l.appendChild(q);f.appendChild(l);k.appendChild(f);e=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});e.className="geBtn";var x=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();a.getModel().beginUpdate();try{for(var x=0;x<c.length;x++){var e=a.getCellGeometry(c[x]);null!=
-e&&(e=e.clone(),a.isCellMovable(c[x])&&(e.relative=d.checked,0<mxUtils.trim(g.value).length&&(e.x=Number(g.value)),0<mxUtils.trim(m.value).length&&(e.y=Number(m.value)),0<mxUtils.trim(v.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.x=Number(v.value)),0<mxUtils.trim(t.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.y=Number(t.value))),a.isCellResizable(c[x])&&(0<mxUtils.trim(y.value).length&&(e.width=Number(y.value)),0<mxUtils.trim(B.value).length&&(e.height=Number(B.value))),
+300,80,!0,!0);a.init()});f.className="geBtn";var l=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});l.className="geBtn";var p=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(k);mxSettings.save();b.hideDialog();b.alert(mxResources.get("restartForChangeRequired"))});p.className="geBtn gePrimaryBtn";var q=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://desk.draw.io/support/solutions/articles/16000056430")});q.className="geBtn";b.isOffline()&&
+!mxClient.IS_CHROMEAPP&&(q.style.display="none");var u=document.createElement("div");u.style.marginTop="14px";u.style.textAlign="right";b.editor.cancelFirst?(u.appendChild(l),u.appendChild(q),u.appendChild(f),u.appendChild(p)):(u.appendChild(q),u.appendChild(f),u.appendChild(p),u.appendChild(l));a.appendChild(u);this.container=a},CropImageDialog=function(b,c,a){var e=document.createElement("div"),k=document.createElement("table"),f=document.createElement("tbody"),l=document.createElement("tr"),p=
+document.createElement("td");p.style.whiteSpace="nowrap";p.setAttribute("colspan","2");mxUtils.write(p,mxResources.get("loading")+"...");l.appendChild(p);f.appendChild(l);var l=document.createElement("tr"),q=document.createElement("td"),u=document.createElement("td");k.style.paddingLeft="6px";mxUtils.write(q,mxResources.get("left")+":");var d=document.createElement("input");d.setAttribute("type","text");d.style.width="100px";d.value="0";this.init=function(){d.focus();d.select()};u.appendChild(d);
+l.appendChild(q);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("top")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.width="100px";g.value="0";u.appendChild(g);l.appendChild(q);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("right")+":");var m=
+document.createElement("input");m.setAttribute("type","text");m.style.width="100px";m.value="0";u.appendChild(m);l.appendChild(q);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("bottom")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value="0";u.appendChild(v);l.appendChild(q);l.appendChild(u);f.appendChild(l);l=document.createElement("tr");
+q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("circle")+":");l.appendChild(q);var t=document.createElement("input");t.setAttribute("type","checkbox");u.appendChild(t);l.appendChild(u);f.appendChild(l);k.appendChild(f);e.appendChild(k);var k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()}),y=new Image,A=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var c=document.createElement("canvas"),x=c.getContext("2d"),e=y.width,
+B=y.height,f=parseInt(d.value),k=parseInt(g.value),e=Math.max(1,e-f-parseInt(m.value)),B=Math.max(1,B-k-parseInt(v.value));c.width=e;c.height=B;t.checked&&(x.fillStyle="#000000",x.arc(e/2,B/2,Math.min(e/2,B/2),0,2*Math.PI),x.fill(),x.globalCompositeOperation="source-in");x.drawImage(y,f,k,e,B,0,0,e,B);a(c.toDataURL())});A.setAttribute("disabled","disabled");y.onload=function(){A.removeAttribute("disabled");p.innerHTML="";mxUtils.write(p,mxResources.get("width")+": "+y.width+" "+mxResources.get("height")+
+": "+y.height)};y.src=c;mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&A.click()});c=document.createElement("div");c.style.marginTop="20px";c.style.textAlign="right";b.editor.cancelFirst?(c.appendChild(k),c.appendChild(A)):(c.appendChild(A),c.appendChild(k));e.appendChild(c);this.container=e},EditGeometryDialog=function(b,c){var a=b.editor.graph,e=1==c.length?a.getCellGeometry(c[0]):null,k=document.createElement("div"),f=document.createElement("table"),l=document.createElement("tbody"),
+p=document.createElement("tr"),q=document.createElement("td"),u=document.createElement("td");f.style.paddingLeft="6px";mxUtils.write(q,mxResources.get("relative")+":");var d=document.createElement("input");d.setAttribute("type","checkbox");null!=e&&e.relative&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);this.init=function(){d.focus()};u.appendChild(d);p.appendChild(q);p.appendChild(u);l.appendChild(p);p=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");
+mxUtils.write(q,mxResources.get("left")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.width="100px";g.value=null!=e?e.x:"";u.appendChild(g);p.appendChild(q);p.appendChild(u);l.appendChild(p);p=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("top")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.width="100px";m.value=null!=e?e.y:"";u.appendChild(m);p.appendChild(q);
+p.appendChild(u);l.appendChild(p);p=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("dx")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=e&&null!=e.offset?e.offset.x:"";u.appendChild(v);p.appendChild(q);p.appendChild(u);l.appendChild(p);p=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("dy")+
+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value=null!=e&&null!=e.offset?e.offset.y:"";u.appendChild(t);p.appendChild(q);p.appendChild(u);l.appendChild(p);p=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("width")+":");var y=document.createElement("input");y.setAttribute("type","text");y.style.width="100px";y.value=null!=e?e.width:"";u.appendChild(y);p.appendChild(q);p.appendChild(u);
+l.appendChild(p);p=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("height")+":");var A=document.createElement("input");A.setAttribute("type","text");A.style.width="100px";A.value=null!=e?e.height:"";u.appendChild(A);p.appendChild(q);p.appendChild(u);l.appendChild(p);p=document.createElement("tr");q=document.createElement("td");u=document.createElement("td");mxUtils.write(q,mxResources.get("rotation")+":");var n=document.createElement("input");
+n.setAttribute("type","text");n.style.width="100px";n.value=1==c.length?mxUtils.getValue(a.getCellStyle(c[0]),mxConstants.STYLE_ROTATION,0):"";u.appendChild(n);p.appendChild(q);p.appendChild(u);l.appendChild(p);f.appendChild(l);k.appendChild(f);e=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});e.className="geBtn";var x=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();a.getModel().beginUpdate();try{for(var x=0;x<c.length;x++){var e=a.getCellGeometry(c[x]);null!=
+e&&(e=e.clone(),a.isCellMovable(c[x])&&(e.relative=d.checked,0<mxUtils.trim(g.value).length&&(e.x=Number(g.value)),0<mxUtils.trim(m.value).length&&(e.y=Number(m.value)),0<mxUtils.trim(v.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.x=Number(v.value)),0<mxUtils.trim(t.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.y=Number(t.value))),a.isCellResizable(c[x])&&(0<mxUtils.trim(y.value).length&&(e.width=Number(y.value)),0<mxUtils.trim(A.value).length&&(e.height=Number(A.value))),
 a.getModel().setGeometry(c[x],e));0<mxUtils.trim(n.value).length&&a.setCellStyles(mxConstants.STYLE_ROTATION,Number(n.value),[c[x]])}}finally{a.getModel().endUpdate()}});x.className="geBtn gePrimaryBtn";mxEvent.addListener(k,"keypress",function(a){13==a.keyCode&&x.click()});f=document.createElement("div");f.style.marginTop="20px";f.style.textAlign="right";b.editor.cancelFirst?(f.appendChild(e),f.appendChild(x)):(f.appendChild(x),f.appendChild(e));k.appendChild(f);this.container=k},LibraryDialog=function(b,
-c,a,e,k,f){function l(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=v;)a=a.parentNode;var b=null;if(null!=a)for(var d=v.firstChild,b=0;null!=d&&d!=a;)d=d.nextSibling,b++;return b}function q(a,g,c,m,n,e,f,k,F){try{if(null==g||"image/"==g.substring(0,6))if(null==a&&null!=f||null==y[a]){var E=function(){D.innerHTML="";D.style.cursor="pointer";D.style.whiteSpace="nowrap";D.style.textOverflow="ellipsis";mxUtils.write(D,null!=J.title&&0<J.title.length?J.title:mxResources.get("untitled"));
-D.style.color=null==J.title||0==J.title.length?"#d0d0d0":""};v.style.backgroundImage="";t.style.display="none";var p=n,u=e;if(n>b.maxImageSize||e>b.maxImageSize){var C=Math.min(1,Math.min(b.maxImageSize/Math.max(1,n)),b.maxImageSize/Math.max(1,e));n*=C;e*=C}p>u?(u=Math.round(100*u/p),p=100):(p=Math.round(100*p/u),u=100);var G=document.createElement("div");G.setAttribute("draggable","true");G.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";G.style.position="relative";G.style.cursor="move";
-mxUtils.setPrefixedStyle(G.style,"transition","transform .1s ease-in-out");if(null!=a){var I=document.createElement("img");I.setAttribute("src",z.convert(a));I.style.width=p+"px";I.style.height=u+"px";I.style.margin="10px";I.style.paddingBottom=Math.floor((100-u)/2)+"px";I.style.paddingLeft=Math.floor((100-p)/2)+"px";G.appendChild(I)}else if(null!=f){var M=b.stringToCells(b.editor.graph.decompress(f.xml));0<M.length&&(b.sidebar.createThumb(M,100,100,G,null,!0,!1),G.firstChild.style.display=mxClient.IS_QUIRKS?
+c,a,e,k,f){function l(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=v;)a=a.parentNode;var b=null;if(null!=a)for(var d=v.firstChild,b=0;null!=d&&d!=a;)d=d.nextSibling,b++;return b}function p(a,g,c,m,n,e,f,k,F){try{if(null==g||"image/"==g.substring(0,6))if(null==a&&null!=f||null==y[a]){var E=function(){D.innerHTML="";D.style.cursor="pointer";D.style.whiteSpace="nowrap";D.style.textOverflow="ellipsis";mxUtils.write(D,null!=J.title&&0<J.title.length?J.title:mxResources.get("untitled"));
+D.style.color=null==J.title||0==J.title.length?"#d0d0d0":""};v.style.backgroundImage="";t.style.display="none";var q=n,u=e;if(n>b.maxImageSize||e>b.maxImageSize){var C=Math.min(1,Math.min(b.maxImageSize/Math.max(1,n)),b.maxImageSize/Math.max(1,e));n*=C;e*=C}q>u?(u=Math.round(100*u/q),q=100):(q=Math.round(100*q/u),u=100);var G=document.createElement("div");G.setAttribute("draggable","true");G.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";G.style.position="relative";G.style.cursor="move";
+mxUtils.setPrefixedStyle(G.style,"transition","transform .1s ease-in-out");if(null!=a){var I=document.createElement("img");I.setAttribute("src",z.convert(a));I.style.width=q+"px";I.style.height=u+"px";I.style.margin="10px";I.style.paddingBottom=Math.floor((100-u)/2)+"px";I.style.paddingLeft=Math.floor((100-q)/2)+"px";G.appendChild(I)}else if(null!=f){var M=b.stringToCells(b.editor.graph.decompress(f.xml));0<M.length&&(b.sidebar.createThumb(M,100,100,G,null,!0,!1),G.firstChild.style.display=mxClient.IS_QUIRKS?
 "inline":"inline-block",G.firstChild.style.cursor="")}var H=document.createElement("img");H.setAttribute("src",Editor.closeImage);H.setAttribute("border","0");H.setAttribute("title",mxResources.get("delete"));H.setAttribute("align","top");H.style.paddingTop="4px";H.style.position="absolute";H.style.marginLeft="-12px";H.style.zIndex="1";H.style.cursor="pointer";mxEvent.addListener(H,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,g){mxEvent.addListener(H,"click",function(c){y[b]=null;for(var m=
 0;m<d.length;m++)if(null!=d[m].data&&d[m].data==b||null!=d[m].xml&&null!=g&&d[m].xml==g.xml){d.splice(m,1);break}G.parentNode.removeChild(a);0==d.length&&(v.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",t.style.display="");mxEvent.consume(c)});mxEvent.addListener(H,"dblclick",function(a){mxEvent.consume(a)})})(G,a,f);G.appendChild(H);G.style.marginBottom="30px";var D=document.createElement("div");D.style.position="absolute";D.style.boxSizing="border-box";D.style.bottom="-18px";D.style.left=
 "10px";D.style.right="10px";D.style.backgroundColor="#ffffff";D.style.overflow="hidden";D.style.textAlign="center";var J=null;null!=a?(J={data:a,w:n,h:e,title:F},null!=k&&(J.aspect=k),y[a]=I,d.push(J)):null!=f&&(f.aspect="fixed",d.push(f),J=f);mxEvent.addListener(D,"keydown",function(a){13==a.keyCode&&null!=x&&(x(),x=null,mxEvent.consume(a))});E();G.appendChild(D);mxEvent.addListener(D,"mousedown",function(a){"true"!=D.getAttribute("contentEditable")&&mxEvent.consume(a)});M=function(a){if(mxClient.IS_IOS||
 mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var d=new FilenameDialog(b,J.title||"",mxResources.get("ok"),function(a){null!=a&&(J.title=a,E())},mxResources.get("enterValue"));b.showDialog(d.container,300,80,!0,!0);d.init();mxEvent.consume(a)}else if("true"!=D.getAttribute("contentEditable")){null!=x&&(x(),x=null);if(null==J.title||0==J.title.length)D.innerHTML="";D.style.textOverflow="";D.style.whiteSpace="";D.style.cursor="text";D.style.color="";D.setAttribute("contentEditable",
-"true");D.focus();document.execCommand("selectAll",!1,null);x=function(){D.removeAttribute("contentEditable");D.style.cursor="pointer";J.title=D.innerHTML;E()};mxEvent.consume(a)}};mxEvent.addListener(D,"click",M);mxEvent.addListener(G,"dblclick",M);v.appendChild(G);mxEvent.addListener(G,"dragstart",function(b){null==a&&null!=f&&(H.style.visibility="hidden",D.style.visibility="hidden");mxClient.IS_FF&&null!=f.xml&&b.dataTransfer.setData("Text",f.xml);B=l(b);mxClient.IS_GC&&(G.style.opacity="0.9");
-window.setTimeout(function(){mxUtils.setPrefixedStyle(G.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(G,30);H.style.visibility="";D.style.visibility=""},0)});mxEvent.addListener(G,"dragend",function(a){"hidden"==H.style.visibility&&(H.style.visibility="",D.style.visibility="");B=null;mxUtils.setOpacity(G,100);mxUtils.setPrefixedStyle(G.style,"transform",null)})}else A||(A=!0,b.handleError({message:mxResources.get("fileExists")}));else{n=!1;try{if(b.spinner.stop(),p=mxUtils.parseXml(a),"mxlibrary"==
-p.documentElement.nodeName){u=JSON.parse(mxUtils.getTextContent(p.documentElement));if(null!=u&&0<u.length)for(var O=0;O<u.length;O++)null!=u[O].xml?q(null,null,0,0,0,0,u[O]):q(u[O].data,null,0,0,u[O].w,u[O].h,null,"fixed",u[O].title);n=!0}else if("mxfile"==p.documentElement.nodeName){for(var K=p.documentElement.getElementsByTagName("diagram"),O=0;O<K.length;O++){var u=mxUtils.getTextContent(K[O]),M=b.stringToCells(b.editor.graph.decompress(u)),S=b.editor.graph.getBoundingBoxFromGeometry(M);q(null,
-null,0,0,0,0,{xml:u,w:S.width,h:S.height})}n=!0}}catch(Z){}n||(b.spinner.stop(),b.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(Z){}return null}function p(a){a.dataTransfer.dropEffect=null!=B?"move":"copy";a.stopPropagation();a.preventDefault()}function u(a){a.stopPropagation();a.preventDefault();A=!1;n=l(a);if(null!=B)null!=n&&n<v.children.length?(d.splice(n>B?n-1:n,0,d.splice(B,1)[0]),v.insertBefore(v.children[B],v.children[n])):(d.push(d.splice(B,1)[0]),v.appendChild(v.children[B]));
-else if(0<a.dataTransfer.files.length)b.importFiles(a.dataTransfer.files,0,0,b.maxImageSize,F(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var g=decodeURIComponent(a.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(g)||/(\.png)($|\?)/i.test(g)||/(\.gif)($|\?)/i.test(g)||/(\.svg)($|\?)/i.test(g))&&b.loadImage(g,function(a){q(g,null,0,0,a.width,a.height);v.scrollTop=v.scrollHeight})}a.stopPropagation();a.preventDefault()}var d=[];a=document.createElement("div");
+"true");D.focus();document.execCommand("selectAll",!1,null);x=function(){D.removeAttribute("contentEditable");D.style.cursor="pointer";J.title=D.innerHTML;E()};mxEvent.consume(a)}};mxEvent.addListener(D,"click",M);mxEvent.addListener(G,"dblclick",M);v.appendChild(G);mxEvent.addListener(G,"dragstart",function(b){null==a&&null!=f&&(H.style.visibility="hidden",D.style.visibility="hidden");mxClient.IS_FF&&null!=f.xml&&b.dataTransfer.setData("Text",f.xml);A=l(b);mxClient.IS_GC&&(G.style.opacity="0.9");
+window.setTimeout(function(){mxUtils.setPrefixedStyle(G.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(G,30);H.style.visibility="";D.style.visibility=""},0)});mxEvent.addListener(G,"dragend",function(a){"hidden"==H.style.visibility&&(H.style.visibility="",D.style.visibility="");A=null;mxUtils.setOpacity(G,100);mxUtils.setPrefixedStyle(G.style,"transform",null)})}else B||(B=!0,b.handleError({message:mxResources.get("fileExists")}));else{n=!1;try{if(b.spinner.stop(),q=mxUtils.parseXml(a),"mxlibrary"==
+q.documentElement.nodeName){u=JSON.parse(mxUtils.getTextContent(q.documentElement));if(null!=u&&0<u.length)for(var O=0;O<u.length;O++)null!=u[O].xml?p(null,null,0,0,0,0,u[O]):p(u[O].data,null,0,0,u[O].w,u[O].h,null,"fixed",u[O].title);n=!0}else if("mxfile"==q.documentElement.nodeName){for(var K=q.documentElement.getElementsByTagName("diagram"),O=0;O<K.length;O++){var u=mxUtils.getTextContent(K[O]),M=b.stringToCells(b.editor.graph.decompress(u)),S=b.editor.graph.getBoundingBoxFromGeometry(M);p(null,
+null,0,0,0,0,{xml:u,w:S.width,h:S.height})}n=!0}}catch(Z){}n||(b.spinner.stop(),b.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(Z){}return null}function q(a){a.dataTransfer.dropEffect=null!=A?"move":"copy";a.stopPropagation();a.preventDefault()}function u(a){a.stopPropagation();a.preventDefault();B=!1;n=l(a);if(null!=A)null!=n&&n<v.children.length?(d.splice(n>A?n-1:n,0,d.splice(A,1)[0]),v.insertBefore(v.children[A],v.children[n])):(d.push(d.splice(A,1)[0]),v.appendChild(v.children[A]));
+else if(0<a.dataTransfer.files.length)b.importFiles(a.dataTransfer.files,0,0,b.maxImageSize,F(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var g=decodeURIComponent(a.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(g)||/(\.png)($|\?)/i.test(g)||/(\.gif)($|\?)/i.test(g)||/(\.svg)($|\?)/i.test(g))&&b.loadImage(g,function(a){p(g,null,0,0,a.width,a.height);v.scrollTop=v.scrollHeight})}a.stopPropagation();a.preventDefault()}var d=[];a=document.createElement("div");
 a.style.height="100%";var g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.height="40px";a.appendChild(g);mxUtils.write(g,mxResources.get("filename")+":");null==c&&(c=b.defaultLibraryName+".xml");var m=document.createElement("input");m.setAttribute("value",c);m.style.marginRight="20px";m.style.marginLeft="10px";m.style.width="500px";null==k||k.isRenamable()||m.setAttribute("disabled","true");this.init=function(){if(null==k||k.isRenamable())m.focus(),mxClient.IS_GC||mxClient.IS_FF||
 5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null)};g.appendChild(m);var v=document.createElement("div");v.style.borderWidth="1px 0px 1px 0px";v.style.borderColor="#d3d3d3";v.style.borderStyle="solid";v.style.marginTop="6px";v.style.overflow="auto";v.style.height="340px";v.style.backgroundPosition="center center";v.style.backgroundRepeat="no-repeat";0==d.length&&Graph.fileSupport&&(v.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var t=
-document.createElement("div");t.style.position="absolute";t.style.width="640px";t.style.top="260px";t.style.textAlign="center";t.style.fontSize="22px";t.style.color="#a0c3ff";mxUtils.write(t,mxResources.get("dragImagesHere"));a.appendChild(t);var y={},B=null,n=null,x=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=x&&(x(),x=null,mxEvent.consume(a))};mxEvent.addListener(v,"mousedown",c);mxEvent.addListener(v,"pointerdown",c);mxEvent.addListener(v,"touchstart",
-c);var z=new mxUrlConverter,A=!1;if(null!=e)for(c=0;c<e.length;c++)g=e[c],q(g.data,null,0,0,g.w,g.h,g,g.aspect,g.title);mxEvent.addListener(v,"dragleave",function(a){t.style.cursor="";for(var b=mxEvent.getSource(a);null!=b;){if(b==v||b==t){a.stopPropagation();a.preventDefault();break}b=b.parentNode}});var F=function(a){return function(d,g,c,m,n,e,x,t,z){null!=z&&(/(\.vsdx)($|\?)/i.test(z.name)||/(\.vssx)($|\?)/i.test(z.name))?b.importVisio(z,mxUtils.bind(this,function(d){b.spinner.stop();q(d,g,c,
-m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," "))})):null!=z&&!b.isOffline()&&(new XMLHttpRequest).upload&&b.isRemoteFileFormat(d,z.name)?b.parseFile(z,mxUtils.bind(this,function(d){4==d.readyState&&(b.spinner.stop(),200<=d.status&&299>=d.status&&(q(d.responseText,g,c,m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," ")),v.scrollTop=v.scrollHeight))})):(q(d,g,c,m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0,
-x.lastIndexOf(".")).replace(/_/g," ")),v.scrollTop=v.scrollHeight)}};mxEvent.addListener(v,"dragover",p);mxEvent.addListener(v,"drop",u);mxEvent.addListener(t,"dragover",p);mxEvent.addListener(t,"drop",u);a.appendChild(v);e=document.createElement("div");e.style.textAlign="right";e.style.marginTop="20px";c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});c.setAttribute("id","btnCancel");c.className="geBtn";b.editor.cancelFirst&&e.appendChild(c);g=mxUtils.button(mxResources.get("export"),
+document.createElement("div");t.style.position="absolute";t.style.width="640px";t.style.top="260px";t.style.textAlign="center";t.style.fontSize="22px";t.style.color="#a0c3ff";mxUtils.write(t,mxResources.get("dragImagesHere"));a.appendChild(t);var y={},A=null,n=null,x=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=x&&(x(),x=null,mxEvent.consume(a))};mxEvent.addListener(v,"mousedown",c);mxEvent.addListener(v,"pointerdown",c);mxEvent.addListener(v,"touchstart",
+c);var z=new mxUrlConverter,B=!1;if(null!=e)for(c=0;c<e.length;c++)g=e[c],p(g.data,null,0,0,g.w,g.h,g,g.aspect,g.title);mxEvent.addListener(v,"dragleave",function(a){t.style.cursor="";for(var b=mxEvent.getSource(a);null!=b;){if(b==v||b==t){a.stopPropagation();a.preventDefault();break}b=b.parentNode}});var F=function(a){return function(d,g,c,m,n,e,x,t,z){null!=z&&(/(\.vsdx)($|\?)/i.test(z.name)||/(\.vssx)($|\?)/i.test(z.name))?b.importVisio(z,mxUtils.bind(this,function(d){b.spinner.stop();p(d,g,c,
+m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," "))})):null!=z&&!b.isOffline()&&(new XMLHttpRequest).upload&&b.isRemoteFileFormat(d,z.name)?b.parseFile(z,mxUtils.bind(this,function(d){4==d.readyState&&(b.spinner.stop(),200<=d.status&&299>=d.status&&(p(d.responseText,g,c,m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," ")),v.scrollTop=v.scrollHeight))})):(p(d,g,c,m,n,e,x,"fixed",mxEvent.isAltDown(a)?null:x.substring(0,
+x.lastIndexOf(".")).replace(/_/g," ")),v.scrollTop=v.scrollHeight)}};mxEvent.addListener(v,"dragover",q);mxEvent.addListener(v,"drop",u);mxEvent.addListener(t,"dragover",q);mxEvent.addListener(t,"drop",u);a.appendChild(v);e=document.createElement("div");e.style.textAlign="right";e.style.marginTop="20px";c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});c.setAttribute("id","btnCancel");c.className="geBtn";b.editor.cancelFirst&&e.appendChild(c);g=mxUtils.button(mxResources.get("export"),
 function(){var a=b.createLibraryDataFromImages(d),g=m.value;/(\.xml)$/i.test(g)||(g+=".xml");b.isLocalFileSave()?b.saveLocalFile(a,g,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(g)+"&format=xml&xml="+encodeURIComponent(a))).simulate(document,"_blank")});g.setAttribute("id","btnDownload");g.className="geBtn";e.appendChild(g);var E=document.createElement("input");E.setAttribute("multiple","multiple");E.setAttribute("type","file");null==document.documentMode&&(mxEvent.addListener(E,
-"change",function(a){A=!1;b.importFiles(E.files,0,0,b.maxImageSize,function(b,d,g,c,m,n,e,x,t){F(a)(b,d,g,c,m,n,e,x,t);E.value=""});v.scrollTop=v.scrollHeight}),g=mxUtils.button(mxResources.get("import"),function(){null!=x&&(x(),x=null);E.click()}),g.setAttribute("id","btnAddImage"),g.className="geBtn",e.appendChild(g));g=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=x&&(x(),x=null);b.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,d){A=!1;if(null!=a){if("data:image/"==
-a.substring(0,11)){var g=a.indexOf(",");0<g&&(a=a.substring(0,g)+";base64,"+a.substring(g+1))}q(a,null,0,0,b,d);v.scrollTop=v.scrollHeight}})});g.setAttribute("id","btnAddImageUrl");g.className="geBtn";e.appendChild(g);this.saveBtnClickHandler=function(a,d,g,c){b.saveLibrary(a,d,g,c)};g=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=x&&(x(),x=null);this.saveBtnClickHandler(m.value,d,k,f)}));g.setAttribute("id","btnSave");g.className="geBtn gePrimaryBtn";e.appendChild(g);
-b.editor.cancelFirst||e.appendChild(c);a.appendChild(e);this.container=a},EditShapeDialog=function(b,c,a,e,k){e=null!=e?e:300;k=null!=k?k:120;var f,l,q=document.createElement("table"),p=document.createElement("tbody");q.style.cellPadding="4px";f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";mxUtils.write(l,a);f.appendChild(l);p.appendChild(f);f=document.createElement("tr");l=document.createElement("td");var u=document.createElement("textarea");
+"change",function(a){B=!1;b.importFiles(E.files,0,0,b.maxImageSize,function(b,d,g,c,m,n,e,x,t){F(a)(b,d,g,c,m,n,e,x,t);E.value=""});v.scrollTop=v.scrollHeight}),g=mxUtils.button(mxResources.get("import"),function(){null!=x&&(x(),x=null);E.click()}),g.setAttribute("id","btnAddImage"),g.className="geBtn",e.appendChild(g));g=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=x&&(x(),x=null);b.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,d){B=!1;if(null!=a){if("data:image/"==
+a.substring(0,11)){var g=a.indexOf(",");0<g&&(a=a.substring(0,g)+";base64,"+a.substring(g+1))}p(a,null,0,0,b,d);v.scrollTop=v.scrollHeight}})});g.setAttribute("id","btnAddImageUrl");g.className="geBtn";e.appendChild(g);this.saveBtnClickHandler=function(a,d,g,c){b.saveLibrary(a,d,g,c)};g=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=x&&(x(),x=null);this.saveBtnClickHandler(m.value,d,k,f)}));g.setAttribute("id","btnSave");g.className="geBtn gePrimaryBtn";e.appendChild(g);
+b.editor.cancelFirst||e.appendChild(c);a.appendChild(e);this.container=a},EditShapeDialog=function(b,c,a,e,k){e=null!=e?e:300;k=null!=k?k:120;var f,l,p=document.createElement("table"),q=document.createElement("tbody");p.style.cellPadding="4px";f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";mxUtils.write(l,a);f.appendChild(l);q.appendChild(f);f=document.createElement("tr");l=document.createElement("td");var u=document.createElement("textarea");
 u.style.outline="none";u.style.resize="none";u.style.width=e-200+"px";u.style.height=k+"px";this.textarea=u;this.init=function(){u.focus();u.scrollTop=0};l.appendChild(u);f.appendChild(l);l=document.createElement("td");a=document.createElement("div");a.style.position="relative";a.style.border="1px solid gray";a.style.top="6px";a.style.width="200px";a.style.height=k+4+"px";a.style.overflow="hidden";a.style.marginBottom="16px";mxEvent.disableContextMenu(a);l.appendChild(a);var d=new Graph(a);d.setEnabled(!1);
-var g=b.editor.graph.cloneCell(c);d.addCells([g]);a=d.view.getState(g);var m="";null!=a.shape&&null!=a.shape.stencil&&(m=mxUtils.getPrettyXml(a.shape.stencil.desc));mxUtils.write(u,m||"");a=d.getGraphBounds();k=Math.min(160/a.width,(k-40)/a.height);d.view.scaleAndTranslate(k,20/k-a.x,20/k-a.y);f.appendChild(l);p.appendChild(f);f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.paddingTop="2px";l.style.whiteSpace="nowrap";l.setAttribute("align","right");
+var g=b.editor.graph.cloneCell(c);d.addCells([g]);a=d.view.getState(g);var m="";null!=a.shape&&null!=a.shape.stencil&&(m=mxUtils.getPrettyXml(a.shape.stencil.desc));mxUtils.write(u,m||"");a=d.getGraphBounds();k=Math.min(160/a.width,(k-40)/a.height);d.view.scaleAndTranslate(k,20/k-a.x,20/k-a.y);f.appendChild(l);q.appendChild(f);f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.paddingTop="2px";l.style.whiteSpace="nowrap";l.setAttribute("align","right");
 k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});k.className="geBtn";b.editor.cancelFirst&&l.appendChild(k);b.isOffline()||(a=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),a.className="geBtn",l.appendChild(a));var v=function(a,d,g){var c=u.value,e=mxUtils.parseXml(c),c=mxUtils.getPrettyXml(e.documentElement),e=e.documentElement.getElementsByTagName("parsererror");if(null!=e&&0<e.length)b.showError(mxResources.get("error"),
-mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(g&&b.hideDialog(),e=!a.model.contains(d),!g||e||c!=m){c=b.editor.graph.compress(c);a.getModel().beginUpdate();try{if(e){var t=b.editor.graph.getInsertPoint();d.geometry.x=t.x;d.geometry.y=t.y;a.addCell(d)}a.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+c+")",[d])}catch(A){throw A;}finally{a.getModel().endUpdate()}e&&a.setSelectionCell(d)}};a=mxUtils.button(mxResources.get("preview"),function(){v(d,g,!1)});a.className="geBtn";
-l.appendChild(a);a=mxUtils.button(mxResources.get("apply"),function(){v(b.editor.graph,c,!0)});a.className="geBtn gePrimaryBtn";l.appendChild(a);b.editor.cancelFirst||l.appendChild(k);f.appendChild(l);p.appendChild(f);q.appendChild(p);this.container=q},CustomDialog=function(b,c,a,e,k,f,l,q){var p=document.createElement("div");p.appendChild(c);c=document.createElement("div");c.style.marginTop="16px";c.style.textAlign="center";null!=l&&c.appendChild(l);l=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();
-null!=e&&e()});l.className="geBtn";q&&(l.style.display="none");b.editor.cancelFirst&&c.appendChild(l);b.isOffline()||null==f||(q=mxUtils.button(mxResources.get("help"),function(){b.openLink(f)}),q.className="geBtn",c.appendChild(q));k=mxUtils.button(k||mxResources.get("ok"),function(){b.hideDialog();null!=a&&a()});c.appendChild(k);k.className="geBtn gePrimaryBtn";b.editor.cancelFirst||c.appendChild(l);p.appendChild(c);this.cancelBtn=l;this.okButton=k;this.container=p},TemplatesDialog=function(){var b=
+mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(g&&b.hideDialog(),e=!a.model.contains(d),!g||e||c!=m){c=b.editor.graph.compress(c);a.getModel().beginUpdate();try{if(e){var t=b.editor.graph.getInsertPoint();d.geometry.x=t.x;d.geometry.y=t.y;a.addCell(d)}a.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+c+")",[d])}catch(B){throw B;}finally{a.getModel().endUpdate()}e&&a.setSelectionCell(d)}};a=mxUtils.button(mxResources.get("preview"),function(){v(d,g,!1)});a.className="geBtn";
+l.appendChild(a);a=mxUtils.button(mxResources.get("apply"),function(){v(b.editor.graph,c,!0)});a.className="geBtn gePrimaryBtn";l.appendChild(a);b.editor.cancelFirst||l.appendChild(k);f.appendChild(l);q.appendChild(f);p.appendChild(q);this.container=p},CustomDialog=function(b,c,a,e,k,f,l,p){var q=document.createElement("div");q.appendChild(c);c=document.createElement("div");c.style.marginTop="16px";c.style.textAlign="center";null!=l&&c.appendChild(l);l=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();
+null!=e&&e()});l.className="geBtn";p&&(l.style.display="none");b.editor.cancelFirst&&c.appendChild(l);b.isOffline()||null==f||(p=mxUtils.button(mxResources.get("help"),function(){b.openLink(f)}),p.className="geBtn",c.appendChild(p));k=mxUtils.button(k||mxResources.get("ok"),function(){b.hideDialog();null!=a&&a()});c.appendChild(k);k.className="geBtn gePrimaryBtn";b.editor.cancelFirst||c.appendChild(l);q.appendChild(c);this.cancelBtn=l;this.okButton=k;this.container=q},TemplatesDialog=function(){var b=
 '<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" placeholder="'+mxResources.get("search",null,"Search")+'"></div><div class="geTemplatesList"><div class="geTempDlgNewDiagramlbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+mxResources.get("templates",null,"Templates")+'</div></div><div class="geTempDlgContent"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+
 mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+mxResources.get("showAll",null,"+ Show all")+'</div></div></div><div class="geTempDlgDiagramsList"><div class="geTempDlgDiagramsListHeader"><div class="geTempDlgDiagramsListTitle"></div><div class="geTempDlgDiagramsListBtns"><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge" data-id="myDiagramsBtn"><img src="/images/my-diagrams.svg" class="geTempDlgMyDiagramsBtnImg"> <span>'+
 mxResources.get("myDiagrams",null,"My diagrams")+'</span></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge geTempDlgRadioBtnActive" data-id="allDiagramsBtn"><img src="/images/all-diagrams-sel.svg" class="geTempDlgAllDiagramsBtnImg"> <span>'+mxResources.get("allDiagrams",null,"All diagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">&#x1F6C8; '+
 mxResources.get("linkToDiagramHint",null,"Add a link to this diagram. The diagram can only be edited from the page that owns it.")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram",null,"Link to Diagram")+'</button><div class="geTempDlgCreateBtn">'+mxResources.get("create",null,"Create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel",null,"Cancel")+"</div></div>",c=document.createElement("div");c.innerHTML=b;c.className="geTemplateDlg";
 var b=window.innerWidth,a=window.innerHeight,e=987,k=712;.9*b<e&&(e=Math.max(.9*b,600),c.style.width=e+"px");.9*a<k&&(k=Math.max(.9*a,300),c.style.height=k+"px");this.width=e;this.height=k;this.container=c};
-TemplatesDialog.prototype.init=function(b,c,a,e,k,f,l,q,p,u){function d(){null!=H&&(H.style.fontWeight="normal",H.style.textDecoration="none",H=null)}function g(a,b,d,g,c,m,n){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";F.querySelector(".geTempDlgRadioBtn[data-id="+g+"]").className="geTempDlgRadioBtn "+(n?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");F.querySelector("."+b).src="/images/"+d+"-sel.svg";F.querySelector("."+c).src="/images/"+
+TemplatesDialog.prototype.init=function(b,c,a,e,k,f,l,p,q,u){function d(){null!=H&&(H.style.fontWeight="normal",H.style.textDecoration="none",H=null)}function g(a,b,d,g,c,m,n){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";F.querySelector(".geTempDlgRadioBtn[data-id="+g+"]").className="geTempDlgRadioBtn "+(n?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");F.querySelector("."+b).src="/images/"+d+"-sel.svg";F.querySelector("."+c).src="/images/"+
 m+".svg";return!0}function m(a){function b(a){aa.removeChild(g);F.removeChild(d);aa.scrollTop=m}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var d=document.createElement("div");d.className="geTempDlgDialogMask";F.appendChild(d);var g=document.createElement("div");g.className="geTempDlgDiagramPreviewBox";var c=document.createElement("img");c.src=a;g.appendChild(c);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn";
 a.setAttribute("title",mxResources.get("close"));g.appendChild(a);var m=aa.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(d,"click",b);aa.appendChild(g);aa.scrollTop=0;g.style.lineHeight=g.clientHeight+"px"}function v(a,b,d){if(null!=D){for(var g=D.className.split(" "),c=0;c<g.length;c++)if(-1<g[c].indexOf("Active")){g.splice(c,1);break}D.className=g.join(" ")}null!=a?(D=a,D.className+=" "+b,K=d,P.className="geTempDlgCreateBtn"):(K=D=null,P.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")}
-function t(a){if(null!=K){var d=K;K=null;P.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";d.isExternal?(1==a?u(d.url,d,"nameInput.value"):p(d.url,d,"nameInput.value"),b.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+d.url,mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&(c(a.getText(),"nameInput.value"),b.hideDialog(!0))}))}}function y(a){a=a?"":"none";for(var b=F.querySelectorAll(".geTempDlgLinkToDiagram"),d=0;d<b.length;d++)b[d].style.display=
-a}function B(a,b,d){function g(){P.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));y(!b)}U.innerHTML="";v();M=a;var c=null;if(d){c=document.createElement("table");c.className="geTempDlgDiagramsListGrid";var n=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));n.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=
-mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));n.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));n.appendChild(e);c.appendChild(n);U.appendChild(c)}for(n=0;n<a.length;n++){a[n].isExternal=!b;var x=a[n].url,e=mxUtils.htmlEntities(a[n].title),z=a[n].tooltip||a[n].title,A=a[n].imgUrl,f=mxUtils.htmlEntities(a[n].changedBy||""),k=mxUtils.htmlEntities(a[n].lastModifiedOn||
-"");A||(A=TEMPLATE_PATH+"/"+x.substring(0,x.length-4)+".png");x=d?50:15;null!=e&&e.length>x&&(e=e.substring(0,x)+"&hellip;");if(d){var l=document.createElement("tr"),A=document.createElement("td"),F=document.createElement("img");F.src="/images/icon-search.svg";F.className="geTempDlgDiagramListPreviewBtn";F.setAttribute("title",mxResources.get("preview"));A.appendChild(F);z=document.createElement("span");z.className="geTempDlgDiagramTitle";z.innerHTML=e;A.appendChild(z);l.appendChild(A);A=document.createElement("td");
-A.innerHTML=f;l.appendChild(A);A=document.createElement("td");A.innerHTML=k;l.appendChild(A);c.appendChild(l);null==D&&(g(),v(l,"geTempDlgDiagramsListGridActive",a[n]));(function(a,b){mxEvent.addListener(l,"click",function(){D!=b&&(g(),v(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(l,"dblclick",t);mxEvent.addListener(F,"click",function(){m(a)})})(a[n],l)}else{var B=document.createElement("div");B.className="geTempDlgDiagramTile";B.setAttribute("title",z);null==D&&(g(),v(B,"geTempDlgDiagramTileActive",
-a[n]));f=document.createElement("div");f.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var E=document.createElement("img");E.style.display="none";(function(a,b){E.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};E.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(E,f);E.src=A;f.appendChild(E);B.appendChild(f);f=document.createElement("div");f.className="geTempDlgDiagramTileLbl";f.innerHTML=null!=e?e:"";B.appendChild(f);
-F=document.createElement("img");F.src="/images/icon-search.svg";F.className="geTempDlgDiagramPreviewBtn";F.setAttribute("title",mxResources.get("preview"));B.appendChild(F);(function(a,b){mxEvent.addListener(B,"click",function(){D!=b&&(g(),v(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(B,"dblclick",t);mxEvent.addListener(F,"click",function(){m(a)})})(a[n],B);U.appendChild(B)}}}function n(a,b){ba.innerHTML="";v();for(var d=!b&&5<a.length?5:a.length,g=0;g<d;g++){var c=a[g];c.isCategory=
+function t(a){if(null!=K){var d=K;K=null;P.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";d.isExternal?(1==a?u(d.url,d,"nameInput.value"):q(d.url,d,"nameInput.value"),b.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+d.url,mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()&&(c(a.getText(),"nameInput.value"),b.hideDialog(!0))}))}}function y(a){a=a?"":"none";for(var b=F.querySelectorAll(".geTempDlgLinkToDiagram"),d=0;d<b.length;d++)b[d].style.display=
+a}function A(a,b,d){function g(){P.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));y(!b)}U.innerHTML="";v();M=a;var c=null;if(d){c=document.createElement("table");c.className="geTempDlgDiagramsListGrid";var n=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));n.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=
+mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));n.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));n.appendChild(e);c.appendChild(n);U.appendChild(c)}for(n=0;n<a.length;n++){a[n].isExternal=!b;var x=a[n].url,e=mxUtils.htmlEntities(a[n].title),z=a[n].tooltip||a[n].title,B=a[n].imgUrl,f=mxUtils.htmlEntities(a[n].changedBy||""),k=mxUtils.htmlEntities(a[n].lastModifiedOn||
+"");B||(B=TEMPLATE_PATH+"/"+x.substring(0,x.length-4)+".png");x=d?50:15;null!=e&&e.length>x&&(e=e.substring(0,x)+"&hellip;");if(d){var l=document.createElement("tr"),B=document.createElement("td"),F=document.createElement("img");F.src="/images/icon-search.svg";F.className="geTempDlgDiagramListPreviewBtn";F.setAttribute("title",mxResources.get("preview"));B.appendChild(F);z=document.createElement("span");z.className="geTempDlgDiagramTitle";z.innerHTML=e;B.appendChild(z);l.appendChild(B);B=document.createElement("td");
+B.innerHTML=f;l.appendChild(B);B=document.createElement("td");B.innerHTML=k;l.appendChild(B);c.appendChild(l);null==D&&(g(),v(l,"geTempDlgDiagramsListGridActive",a[n]));(function(a,b){mxEvent.addListener(l,"click",function(){D!=b&&(g(),v(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(l,"dblclick",t);mxEvent.addListener(F,"click",function(){m(a)})})(a[n],l)}else{var A=document.createElement("div");A.className="geTempDlgDiagramTile";A.setAttribute("title",z);null==D&&(g(),v(A,"geTempDlgDiagramTileActive",
+a[n]));f=document.createElement("div");f.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var E=document.createElement("img");E.style.display="none";(function(a,b){E.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};E.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(E,f);E.src=B;f.appendChild(E);A.appendChild(f);f=document.createElement("div");f.className="geTempDlgDiagramTileLbl";f.innerHTML=null!=e?e:"";A.appendChild(f);
+F=document.createElement("img");F.src="/images/icon-search.svg";F.className="geTempDlgDiagramPreviewBtn";F.setAttribute("title",mxResources.get("preview"));A.appendChild(F);(function(a,b){mxEvent.addListener(A,"click",function(){D!=b&&(g(),v(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(A,"dblclick",t);mxEvent.addListener(F,"click",function(){m(a)})})(a[n],A);U.appendChild(A)}}}function n(a,b){ba.innerHTML="";v();for(var d=!b&&5<a.length?5:a.length,g=0;g<d;g++){var c=a[g];c.isCategory=
 !0;var m=document.createElement("div"),n=mxResources.get(c.title);null==n&&(n=c.title.substring(0,1).toUpperCase()+c.title.substring(1));m.className="geTempDlgNewDiagramCatItem";m.setAttribute("title",n);n=mxUtils.htmlEntities(n);15<n.length&&(n=n.substring(0,15)+"&hellip;");null==D&&(P.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),y(),v(m,"geTempDlgNewDiagramCatItemActive",c));var e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemImg";var x=document.createElement("img");
 x.src=NEW_DIAGRAM_CATS_PATH+"/"+c.img;e.appendChild(x);m.appendChild(e);e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemLbl";e.innerHTML=n;m.appendChild(e);ba.appendChild(m);(function(a,b){mxEvent.addListener(m,"click",function(){D!=b&&(P.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),y(),v(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(m,"dblclick",t)})(c,m)}T.style.display=5>a.length?"none":""}function x(a){var b=F.querySelector(".geTemplatesList"),
 d;for(d in a){var g=document.createElement("div"),c=mxResources.get(d),m=a[d];null==c&&(c=d.substring(0,1).toUpperCase()+d.substring(1));g.className="geTemplateCatLink";g.setAttribute("title",c+" ("+m.length+")");c=mxUtils.htmlEntities(c);15<c.length&&(c=c.substring(0,15)+"&hellip;");g.innerHTML=c+" ("+m.length+")";b.appendChild(g);(function(b,d,c){mxEvent.addListener(g,"click",function(){H!=c&&(null!=H?(H.style.fontWeight="normal",H.style.textDecoration="none"):(N.style.display="none",ea.style.minHeight=
-"100%"),H=c,H.style.fontWeight="bold",H.style.textDecoration="underline",aa.scrollTop=0,E&&(G=!0),V.innerHTML=d,W.style.display="none",B(a[b],!0))})})(d,c,g)}}function z(a){l&&(aa.scrollTop=0,U.innerHTML="",Q.spin(U),G=!1,E=!0,V.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),O=null,l(L,a?null:f))}function A(a){d();aa.scrollTop=0;U.innerHTML="";Q.spin(U);G=!1;E=!0;fa=null;V.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+
-' "'+mxUtils.htmlEntities(a)+'"';q(a,L,C?null:f);O=a}e=null!=e?e:TEMPLATE_PATH+"/index.xml";k=null!=k?k:NEW_DIAGRAM_CATS_PATH+"/index.xml";var F=this.container,E=!1,G=!1,H=null,D=null,K=null,I=!1,C=!0,J=!1,M=[],O,T=F.querySelector(".geTempDlgShowAllBtn"),U=F.querySelector(".geTempDlgDiagramsTiles"),V=F.querySelector(".geTempDlgDiagramsListTitle"),W=F.querySelector(".geTempDlgDiagramsListBtns"),aa=F.querySelector(".geTempDlgContent"),ea=F.querySelector(".geTempDlgDiagramsList"),N=F.querySelector(".geTempDlgNewDiagramCat"),
+"100%"),H=c,H.style.fontWeight="bold",H.style.textDecoration="underline",aa.scrollTop=0,E&&(G=!0),V.innerHTML=d,W.style.display="none",A(a[b],!0))})})(d,c,g)}}function z(a){l&&(aa.scrollTop=0,U.innerHTML="",Q.spin(U),G=!1,E=!0,V.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),O=null,l(L,a?null:f))}function B(a){d();aa.scrollTop=0;U.innerHTML="";Q.spin(U);G=!1;E=!0;fa=null;V.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+
+' "'+mxUtils.htmlEntities(a)+'"';p(a,L,C?null:f);O=a}e=null!=e?e:TEMPLATE_PATH+"/index.xml";k=null!=k?k:NEW_DIAGRAM_CATS_PATH+"/index.xml";var F=this.container,E=!1,G=!1,H=null,D=null,K=null,I=!1,C=!0,J=!1,M=[],O,T=F.querySelector(".geTempDlgShowAllBtn"),U=F.querySelector(".geTempDlgDiagramsTiles"),V=F.querySelector(".geTempDlgDiagramsListTitle"),W=F.querySelector(".geTempDlgDiagramsListBtns"),aa=F.querySelector(".geTempDlgContent"),ea=F.querySelector(".geTempDlgDiagramsList"),N=F.querySelector(".geTempDlgNewDiagramCat"),
 ba=F.querySelector(".geTempDlgNewDiagramCatList"),P=F.querySelector(".geTempDlgCreateBtn"),Q=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(F.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){d();N.style.display="";ea.style.minHeight="calc(100% - 280px)";z(C)});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){g(this,"geTempDlgAllDiagramsBtnImg",
-"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(C=!0,null==O?z(C):A(O))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){g(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(C=!1,null==O?z(C):A(O))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){g(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg",
-"tiles",!1)&&(J=!0,B(M,!1,J))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){g(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(J=!1,B(M,!1,J))});mxEvent.addListener(T,"click",function(){I?(N.style.height="280px",ba.style.height="190px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),n(Z)):(N.style.height="440px",ba.style.height="355px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess",
+"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(C=!0,null==O?z(C):B(O))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){g(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(C=!1,null==O?z(C):B(O))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){g(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg",
+"tiles",!1)&&(J=!0,A(M,!1,J))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){g(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(J=!1,A(M,!1,J))});mxEvent.addListener(T,"click",function(){I?(N.style.height="280px",ba.style.height="190px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),n(Z)):(N.style.height="440px",ba.style.height="355px",T.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess",
 null,"- Show less")),n(Z,!0));I=!I});var X=!1,R=!1,S={},Z=[],ca=1;mxUtils.get(e,function(a){if(!X){X=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var d=b.indexOf("/"),b=b.substring(0,d),d=S[b];null==d&&(ca++,d=[],S[b]=d);d.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=a.nextSibling}x(S)}});mxUtils.get(k,
-function(a){if(!R){R=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&Z.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),title:a.getAttribute("title")}),a=a.nextSibling;n(Z)}});var L=function(a,b){W.style.display="";Q.stop();E=!1;G?G=!1:b?U.innerHTML=b:0==a.length?U.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):B(a,!1,J)};z(C);var fa=null;q&&mxEvent.addListener(F.querySelector(".geTempDlgSearchBox"),
-"keyup",function(a){var b=this;null!=fa&&clearTimeout(fa);13==a.keyCode?A(b.value):fa=setTimeout(function(){A(b.value)},500)});mxEvent.addListener(P,"click",t);mxEvent.addListener(F.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){t(!0)});mxEvent.addListener(F.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=a&&a();b.hideDialog(!0)})};
-var BtnDialog=function(b,c,a,e){var k=document.createElement("div");k.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("done"));var l="Unknown",q=document.createElement("img");q.setAttribute("border","0");q.setAttribute("align","absmiddle");q.style.marginRight="10px";c==b.drive?(l=mxResources.get("googleDrive"),q.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==b.dropbox?
-(l=mxResources.get("dropbox"),q.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==b.oneDrive?(l=mxResources.get("oneDrive"),q.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==b.gitHub?(l=mxResources.get("github"),q.src=IMAGE_PATH+"/github-logo-white.svg"):c==b.trello&&(l=mxResources.get("trello"),q.src=IMAGE_PATH+"/trello-logo-white.svg");b=document.createElement("p");mxUtils.write(b,mxResources.get("authorizedIn",[l],"You are now authorized in {1}"));a=mxUtils.button(a,e);a.insertBefore(q,a.firstChild);
+function(a){if(!R){R=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&Z.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),title:a.getAttribute("title")}),a=a.nextSibling;n(Z)}});var L=function(a,b){W.style.display="";Q.stop();E=!1;G?G=!1:b?U.innerHTML=b:0==a.length?U.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):A(a,!1,J)};z(C);var fa=null;p&&mxEvent.addListener(F.querySelector(".geTempDlgSearchBox"),
+"keyup",function(a){var b=this;null!=fa&&clearTimeout(fa);13==a.keyCode?B(b.value):fa=setTimeout(function(){B(b.value)},500)});mxEvent.addListener(P,"click",t);mxEvent.addListener(F.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){t(!0)});mxEvent.addListener(F.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=a&&a();b.hideDialog(!0)})};
+var BtnDialog=function(b,c,a,e){var k=document.createElement("div");k.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("done"));var l="Unknown",p=document.createElement("img");p.setAttribute("border","0");p.setAttribute("align","absmiddle");p.style.marginRight="10px";c==b.drive?(l=mxResources.get("googleDrive"),p.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==b.dropbox?
+(l=mxResources.get("dropbox"),p.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==b.oneDrive?(l=mxResources.get("oneDrive"),p.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==b.gitHub?(l=mxResources.get("github"),p.src=IMAGE_PATH+"/github-logo-white.svg"):c==b.trello&&(l=mxResources.get("trello"),p.src=IMAGE_PATH+"/trello-logo-white.svg");b=document.createElement("p");mxUtils.write(b,mxResources.get("authorizedIn",[l],"You are now authorized in {1}"));a=mxUtils.button(a,e);a.insertBefore(p,a.firstChild);
 a.style.marginTop="6px";a.className="geBigButton";k.appendChild(f);k.appendChild(b);k.appendChild(a);this.container=k};(function(){Editor.prototype.appName="draw.io";Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
 IMAGE_PATH+"/delete.png";Editor.plusImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDdCMTdENjVCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDdCMTdENjZCOEM4MTFFNDlCRjVBNDdCODU5NjNBNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowN0IxN0Q2M0I4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowN0IxN0Q2NEI4QzgxMUU0OUJGNUE0N0I4NTk2M0E1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtjrjmgAAAAtSURBVHjaYvz//z8DMigvLwcLdHZ2MiKLMzEQCaivkLGsrOw/dU0cAr4GCDAARQsQbTFrv10AAAAASUVORK5CYII=":
 IMAGE_PATH+"/plus.png";Editor.spinImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDAAMAPUxAEVriVp7lmCAmmGBm2OCnGmHn3OPpneSqYKbr4OcsIScsI2kto6kt46lt5KnuZmtvpquvpuvv56ywaCzwqK1xKu7yay9yq+/zLHAzbfF0bjG0bzJ1LzK1MDN18jT28nT3M3X3tHa4dTc49Xd5Njf5dng5t3k6d/l6uDm6uru8e7x8/Dz9fT29/b4+Pj5+fj5+vr6+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkKADEAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAADAAMAAAGR8CYcEgsOgYAIax4CCQuQldrCBEsiK8VS2hoFGOrlJDA+cZQwkLnqyoJFZKviSS0ICrE0ec0jDAwIiUeGyBFGhMPFBkhZo1BACH5BAkKAC4ALAAAAAAMAAwAhVB0kFR3k1V4k2CAmmWEnW6Lo3KOpXeSqH2XrIOcsISdsImhtIqhtJCmuJGnuZuwv52wwJ+ywZ+ywqm6yLHBzbLCzrXEz7fF0LnH0rrI0r7L1b/M1sXR2cfT28rV3czW3s/Z4Nfe5Nvi6ODm6uLn6+Ln7OLo7OXq7efs7+zw8u/y9PDy9PX3+Pr7+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZDQJdwSCxGDAIAoVFkFBwYSyIwGE4OkCJxIdG6WkJEx8sSKj7elfBB0a5SQg1EQ0SVVMPKhDM6iUIkRR4ZFxsgJl6JQQAh+QQJCgAxACwAAAAADAAMAIVGa4lcfZdjgpxkg51nhp5ui6N3kqh5lKqFnbGHn7KIoLOQp7iRp7mSqLmTqbqarr6br7+fssGitcOitcSuvsuuv8uwwMyzw861xNC5x9K6x9K/zNbDztjE0NnG0drJ1NzQ2eDS2+LT2+LV3ePZ4Oba4ebb4ufc4+jm6+7t8PLt8PPt8fPx8/Xx9PX09vf19/j3+Pn///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ8CYcEgsUhQFggFSjCQmnE1jcBhqGBXiIuAQSi7FGEIgfIzCFoCXFCZiPO0hKBMiwl7ET6eUYqlWLkUnISImKC1xbUEAIfkECQoAMgAsAAAAAAwADACFTnKPT3KPVHaTYoKcb4yjcY6leZSpf5mtgZuvh5+yiqG0i6K1jqW3kae5nrHBnrLBn7LCoLPCobTDqbrIqrvIs8LOtMPPtcPPtcTPuMbRucfSvcrUvsvVwMzWxdHaydTcytXdzNbezdff0drh2ODl2+Ln3eTp4Obq4ujs5Ont5uvu6O3w6u7w6u7x7/L09vj5+vr7+vv7////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkdAmXBILHIcicOCUqxELKKPxKAYgiYd4oMAEWo8RVmjIMScwhmBcJMKXwLCECmMGAhPI1QRwBiaSixCMDFhLSorLi8wYYxCQQAh+QQJCgAxACwAAAAADAAMAIVZepVggJphgZtnhp5vjKN2kah3kqmBmq+KobSLorWNpLaRp7mWq7ybr7+gs8KitcSktsWnuManucexwM2ywc63xtG6yNO9ytS+ytW/zNbDz9jH0tvL1d3N197S2+LU3OPU3ePV3eTX3+Xa4efb4ufd5Onl6u7r7vHs7/Lt8PLw8/Xy9Pby9fb09ff2+Pn3+Pn6+vr///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSMCYcEgseiwSR+RS7GA4JFGF8RiWNiEiJTERgkjFGAQh/KTCGoJwpApnBkITKrwoCFWnFlEhaAxXLC9CBwAGRS4wQgELYY1CQQAh+QQJCgAzACwAAAAADAAMAIVMcI5SdZFhgZtti6JwjaR4k6mAma6Cm6+KobSLorWLo7WNo7aPpredsMCescGitMOitcSmuMaqu8ixwc2zws63xdC4xtG5x9K9ytXAzdfCztjF0NnF0drK1d3M1t7P2N/P2eDT2+LX3+Xe5Onh5+vi5+vj6Ozk6e3n7O/o7O/q7vHs7/Lt8PPu8fPx8/X3+Pn6+vv7+/v8/Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRcCZcEgsmkIbTOZTLIlGqZNnchm2SCgiJ6IRqljFmQUiXIVnoITQde4chC9Y+LEQxmTFRkFSNFAqDAMIRQoCAAEEDmeLQQAh+QQJCgAwACwAAAAADAAMAIVXeZRefplff5lhgZtph59yjqV2kaeAmq6FnbGFnrGLorWNpLaQp7mRqLmYrb2essGgs8Klt8apusitvcquv8u2xNC7yNO8ydS8ytTAzdfBzdfM1t7N197Q2eDU3OPX3+XZ4ObZ4ebc4+jf5erg5erg5uvp7fDu8fPv8vTz9fb09vf19/j3+Pn4+fn5+vr6+/v///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRUCYcEgspkwjEKhUVJ1QsBNp0xm2VixiSOMRvlxFGAcTJook5eEHIhQcwpWIkAFQECkNy9AQWFwyEAkPRQ4FAwQIE2llQQAh+QQJCgAvACwAAAAADAAMAIVNcY5SdZFigptph6BvjKN0kKd8lquAmq+EnbGGn7KHn7ONpLaOpbearr+csMCdscCescGhtMOnuMauvsuzws60w862xdC9ytW/y9a/zNbCztjG0drH0tvK1N3M1t7N19/U3ePb4uff5urj6Ozk6e3l6u7m6u7o7PDq7vDt8PPv8vTw8vTw8/X19vf6+vv///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ8CXcEgsvlytVUplJLJIpSEDUESFTELBwSgCCQEV42kjDFiMo4uQsDB2MkLHoEHUTD7DRAHC8VAiZ0QSCgYIDxhNiUEAOw==":
@@ -7813,8 +7822,8 @@ MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJax
 b){null!=this.graph.container&&this.graph.mathEnabled&&Editor.MathJaxRender(this.graph.container)}))};var g=document.getElementsByTagName("script");if(null!=g&&0<g.length){var c=document.createElement("script");c.type="text/javascript";c.src=a;g[0].parentNode.appendChild(c)}};Editor.prototype.csvToArray=function(a){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(a))return null;
 var b=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(a,d,g,c){void 0!==d?b.push(d.replace(/\\'/g,"'")):void 0!==g?b.push(g.replace(/\\"/g,'"')):void 0!==c&&b.push(c);return""});/,\s*$/.test(a)&&b.push("");return b};if(window.ColorDialog){var k=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,b){k.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(a,b){var d=null;null!=a.editor.graph.getModel().getParent(b)?d=b.getId():null!=a.currentPage&&(d=a.currentPage.getId());return d});if(null!=window.StyleFormatPanel){var l=Format.prototype.init;Format.prototype.init=function(){l.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",
-this.update)};var q=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?q.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var p=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=
-function(a){a=p.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var b=this.editorUi,d=b.editor.graph,g=this.createOption(mxResources.get("shadow"),function(){return d.shadowVisible},function(a){var g=new ChangePageSetup(b);g.ignoreColor=!0;g.ignoreImage=!0;g.shadowVisible=a;d.model.execute(g)},{install:function(a){this.listener=function(){a(d.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});
+this.update)};var p=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?p.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var q=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=
+function(a){a=q.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var b=this.editorUi,d=b.editor.graph,g=this.createOption(mxResources.get("shadow"),function(){return d.shadowVisible},function(a){var g=new ChangePageSetup(b);g.ignoreColor=!0;g.ignoreImage=!0;g.shadowVisible=a;d.model.execute(g)},{install:function(a){this.listener=function(){a(d.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});
 Editor.shadowOptionEnabled||(g.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(g,60));a.appendChild(g)}return a};var u=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=u.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;if(d.isEnabled()){var g=b.getCurrentFile();null!=g&&g.isAutosaveOptional()&&(g=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a)},
 {install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}}),a.appendChild(g))}if(this.isMathOptionVisible()&&d.isEnabled()&&"undefined"!==typeof MathJax){g=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return d.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(d.mathEnabled)};b.addListener("mathEnabledChanged",
 this.listener)},destroy:function(){b.removeListener(this.listener)}});g.style.paddingTop="5px";a.appendChild(g);var c=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875");c.style.position="relative";c.style.marginLeft="6px";c.style.top="2px";g.appendChild(c)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",
@@ -7847,16 +7856,16 @@ d.size&&(n=n.slice(0,d.size));b=n.join(",");null!=d.countProperty&&(y.setCellSty
 c.push(d.dependentProps[a]);m.push(t)}v.editorUi.fireEvent(new mxEventObject("styleChanged","keys",c,"values",m,"cells",y.getSelectionCells()))}finally{y.getModel().endUpdate()}}function c(b,d,g){var c=mxUtils.getOffset(a,!0),m=mxUtils.getOffset(b,!0);d.style.position="absolute";d.style.left=m.x-c.x+"px";d.style.top=m.y-c.y+"px";d.style.width=b.offsetWidth+"px";d.style.height=b.offsetHeight-(g?4:0)+"px";d.style.zIndex=5}function m(a,b,d){var c=document.createElement("div");c.style.width="32px";c.style.height=
 "4px";c.style.margin="2px";c.style.border="1px solid black";c.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(v,function(m){this.editorUi.pickColor(b,function(b){c.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;g(a,b,d)});mxEvent.consume(m)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(c);return btn}function n(a,b,d,c,m,n,e){null!=b&&(b=b.split(","),f.push({name:a,
 values:b,type:d,defVal:c,countProperty:m,parentRow:n,isDeletable:!0,flipBkg:e}));btn=mxUtils.button("+",mxUtils.bind(v,function(b){for(var x=n,v=0;null!=x.nextSibling;)if(x.nextSibling.getAttribute("data-pName")==a)x=x.nextSibling,v++;else break;var y={type:d,parentRow:n,index:v,isDeletable:!0,defVal:c,countProperty:m},v=t(a,"",y,0==v%2,e);g(a,c,y);x.parentNode.insertBefore(v,x.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}
-function e(a,b,d,g,c,m,n){if(0<c){var e=Array(c);b=null!=b?b.split(","):[];for(var x=0;x<c;x++)e[x]=null!=b[x]?b[x]:null!=g?g:"";f.push({name:a,values:e,type:d,defVal:g,parentRow:m,flipBkg:n,size:c})}return document.createElement("div")}function x(a,b,d){var c=document.createElement("input");c.type="checkbox";c.checked="1"==b;mxEvent.addListener(c,"change",function(){g(a,c.checked?"1":"0",d)});return c}function t(b,d,t,y,f){var z=t.dispName,k=t.type,A=document.createElement("tr");A.className="gePropRow"+
-(f?"Dark":"")+(y?"Alt":"")+" gePropNonHeaderRow";A.setAttribute("data-pName",b);A.setAttribute("data-pValue",d);y=!1;null!=t.index&&(A.setAttribute("data-index",t.index),z=(null!=z?z:"")+"["+t.index+"]",y=!0);var l=document.createElement("td");l.className="gePropRowCell";l.innerHTML=mxUtils.htmlEntities(mxResources.get(z,null,z));y&&(l.style.textAlign="right");A.appendChild(l);l=document.createElement("td");l.className="gePropRowCell";if("color"==k)l.appendChild(m(b,d,t));else if("bool"==k||"boolean"==
-k)l.appendChild(x(b,d,t));else if("enum"==k){var B=t.enumList;for(f=0;f<B.length;f++)if(z=B[f],z.val==d){l.innerHTML=mxUtils.htmlEntities(mxResources.get(z.dispName,null,z.dispName));break}mxEvent.addListener(l,"click",mxUtils.bind(v,function(){var m=document.createElement("select");c(l,m);for(var n=0;n<B.length;n++){var e=B[n],x=document.createElement("option");x.value=mxUtils.htmlEntities(e.val);x.innerHTML=mxUtils.htmlEntities(mxResources.get(e.dispName,null,e.dispName));m.appendChild(x)}m.value=
-d;a.appendChild(m);mxEvent.addListener(m,"change",function(){var a=mxUtils.htmlEntities(m.value);g(b,a,t)});m.focus();mxEvent.addListener(m,"blur",function(){a.removeChild(m)})}))}else"dynamicArr"==k?l.appendChild(n(b,d,t.subType,t.subDefVal,t.countProperty,A,f)):"staticArr"==k?l.appendChild(e(b,d,t.subType,t.subDefVal,t.size,A,f)):(l.innerHTML=d,mxEvent.addListener(l,"click",mxUtils.bind(v,function(){function m(){var a=n.value,a=0==a.length&&"string"!=k?0:a;t.allowAuto&&("auto"==a.trim().toLowerCase()?
+function e(a,b,d,g,c,m,n){if(0<c){var e=Array(c);b=null!=b?b.split(","):[];for(var x=0;x<c;x++)e[x]=null!=b[x]?b[x]:null!=g?g:"";f.push({name:a,values:e,type:d,defVal:g,parentRow:m,flipBkg:n,size:c})}return document.createElement("div")}function x(a,b,d){var c=document.createElement("input");c.type="checkbox";c.checked="1"==b;mxEvent.addListener(c,"change",function(){g(a,c.checked?"1":"0",d)});return c}function t(b,d,t,y,f){var z=t.dispName,k=t.type,B=document.createElement("tr");B.className="gePropRow"+
+(f?"Dark":"")+(y?"Alt":"")+" gePropNonHeaderRow";B.setAttribute("data-pName",b);B.setAttribute("data-pValue",d);y=!1;null!=t.index&&(B.setAttribute("data-index",t.index),z=(null!=z?z:"")+"["+t.index+"]",y=!0);var l=document.createElement("td");l.className="gePropRowCell";l.innerHTML=mxUtils.htmlEntities(mxResources.get(z,null,z));y&&(l.style.textAlign="right");B.appendChild(l);l=document.createElement("td");l.className="gePropRowCell";if("color"==k)l.appendChild(m(b,d,t));else if("bool"==k||"boolean"==
+k)l.appendChild(x(b,d,t));else if("enum"==k){var A=t.enumList;for(f=0;f<A.length;f++)if(z=A[f],z.val==d){l.innerHTML=mxUtils.htmlEntities(mxResources.get(z.dispName,null,z.dispName));break}mxEvent.addListener(l,"click",mxUtils.bind(v,function(){var m=document.createElement("select");c(l,m);for(var n=0;n<A.length;n++){var e=A[n],x=document.createElement("option");x.value=mxUtils.htmlEntities(e.val);x.innerHTML=mxUtils.htmlEntities(mxResources.get(e.dispName,null,e.dispName));m.appendChild(x)}m.value=
+d;a.appendChild(m);mxEvent.addListener(m,"change",function(){var a=mxUtils.htmlEntities(m.value);g(b,a,t)});m.focus();mxEvent.addListener(m,"blur",function(){a.removeChild(m)})}))}else"dynamicArr"==k?l.appendChild(n(b,d,t.subType,t.subDefVal,t.countProperty,B,f)):"staticArr"==k?l.appendChild(e(b,d,t.subType,t.subDefVal,t.size,B,f)):(l.innerHTML=d,mxEvent.addListener(l,"click",mxUtils.bind(v,function(){function m(){var a=n.value,a=0==a.length&&"string"!=k?0:a;t.allowAuto&&("auto"==a.trim().toLowerCase()?
 (a="auto",k="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=t.min&&a<t.min?a=t.min:null!=t.max&&a>t.max&&(a=t.max);a=mxUtils.htmlEntities(("int"==k?parseInt(a):a)+"");g(b,a,t)}var n=document.createElement("input");c(l,n,!0);n.value=d;n.className="gePropEditor";"int"!=k&&"float"!=k||t.allowAuto||(n.type="number",n.step="int"==k?"1":"any",null!=t.min&&(n.min=parseFloat(t.min)),null!=t.max&&(n.max=parseFloat(t.max)));a.appendChild(n);mxEvent.addListener(n,"keypress",function(a){13==a.keyCode&&m()});
-n.focus();mxEvent.addListener(n,"blur",function(){m()})})));t.isDeletable&&(f=mxUtils.button("-",mxUtils.bind(v,function(a){g(b,"",t,t.index);mxEvent.consume(a)})),f.style.height="16px",f.style.width="25px",f.style["float"]="right",f.className="geColorBtn",l.appendChild(f));A.appendChild(l);return A}var v=this,y=this.editorUi.editor.graph,f=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.style.whiteSpace="nowrap";k.style.width="100%";var z=document.createElement("tr");
-z.className="gePropHeader";var A=document.createElement("th");A.className="gePropHeaderCell";var l=document.createElement("img");l.src=Sidebar.prototype.expandedImage;A.appendChild(l);mxUtils.write(A,mxResources.get("property"));z.style.cursor="pointer";var B=function(){var b=k.querySelectorAll(".gePropNonHeaderRow"),d;if(v.editorUi.propertiesCollapsed){l.src=Sidebar.prototype.collapsedImage;d="none";for(var g=a.childNodes.length-1;0<=g;g--)try{var c=a.childNodes[g],m=c.nodeName.toUpperCase();"INPUT"!=
-m&&"SELECT"!=m||a.removeChild(c)}catch(oa){}}else l.src=Sidebar.prototype.expandedImage,d="";for(g=0;g<b.length;g++)b[g].style.display=d};mxEvent.addListener(z,"click",function(){v.editorUi.propertiesCollapsed=!v.editorUi.propertiesCollapsed;B()});z.appendChild(A);A=document.createElement("th");A.className="gePropHeaderCell";A.innerHTML=mxResources.get("value");z.appendChild(A);k.appendChild(z);var q=!1,F=!1,p;for(p in b)if(z=b[p],"function"!=typeof z.isVisible||z.isVisible(d)){var u=null!=d.style[p]?
-mxUtils.htmlEntities(d.style[p]+""):z.defVal;if("separator"==z.type)F=!F;else{if("staticArr"==z.type)z.size=parseInt(d.style[z.sizeProperty]||b[z.sizeProperty].defVal)||0;else if(null!=z.dependentProps){for(var Q=z.dependentProps,X=[],R=[],A=0;A<Q.length;A++){var S=d.style[Q[A]];R.push(b[Q[A]].subDefVal);X.push(null!=S?S.split(","):[])}z.dependentPropsDefVal=R;z.dependentPropsVals=X}k.appendChild(t(p,u,z,q,F));q=!q}}for(A=0;A<f.length;A++)for(z=f[A],b=z.parentRow,d=0;d<z.values.length;d++)p=t(z.name,
-z.values[d],{type:z.type,parentRow:z.parentRow,isDeletable:z.isDeletable,index:d,defVal:z.defVal,countProperty:z.countProperty,size:z.size},0==d%2,z.flipBkg),b.parentNode.insertBefore(p,b.nextSibling),b=p;a.appendChild(k);B();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){g.getModel().beginUpdate();try{var d=g.getSelectionCells();for(b=0;b<d.length;b++){for(var c=g.getModel().getStyle(d[b]),n=0;n<m.length;n++)c=mxUtils.removeStylename(c,
+n.focus();mxEvent.addListener(n,"blur",function(){m()})})));t.isDeletable&&(f=mxUtils.button("-",mxUtils.bind(v,function(a){g(b,"",t,t.index);mxEvent.consume(a)})),f.style.height="16px",f.style.width="25px",f.style["float"]="right",f.className="geColorBtn",l.appendChild(f));B.appendChild(l);return B}var v=this,y=this.editorUi.editor.graph,f=[];a.style.position="relative";a.style.padding="0";var k=document.createElement("table");k.style.whiteSpace="nowrap";k.style.width="100%";var z=document.createElement("tr");
+z.className="gePropHeader";var B=document.createElement("th");B.className="gePropHeaderCell";var l=document.createElement("img");l.src=Sidebar.prototype.expandedImage;B.appendChild(l);mxUtils.write(B,mxResources.get("property"));z.style.cursor="pointer";var A=function(){var b=k.querySelectorAll(".gePropNonHeaderRow"),d;if(v.editorUi.propertiesCollapsed){l.src=Sidebar.prototype.collapsedImage;d="none";for(var g=a.childNodes.length-1;0<=g;g--)try{var c=a.childNodes[g],m=c.nodeName.toUpperCase();"INPUT"!=
+m&&"SELECT"!=m||a.removeChild(c)}catch(oa){}}else l.src=Sidebar.prototype.expandedImage,d="";for(g=0;g<b.length;g++)b[g].style.display=d};mxEvent.addListener(z,"click",function(){v.editorUi.propertiesCollapsed=!v.editorUi.propertiesCollapsed;A()});z.appendChild(B);B=document.createElement("th");B.className="gePropHeaderCell";B.innerHTML=mxResources.get("value");z.appendChild(B);k.appendChild(z);var p=!1,F=!1,q;for(q in b)if(z=b[q],"function"!=typeof z.isVisible||z.isVisible(d)){var u=null!=d.style[q]?
+mxUtils.htmlEntities(d.style[q]+""):z.defVal;if("separator"==z.type)F=!F;else{if("staticArr"==z.type)z.size=parseInt(d.style[z.sizeProperty]||b[z.sizeProperty].defVal)||0;else if(null!=z.dependentProps){for(var Q=z.dependentProps,X=[],R=[],B=0;B<Q.length;B++){var S=d.style[Q[B]];R.push(b[Q[B]].subDefVal);X.push(null!=S?S.split(","):[])}z.dependentPropsDefVal=R;z.dependentPropsVals=X}k.appendChild(t(q,u,z,p,F));p=!p}}for(B=0;B<f.length;B++)for(z=f[B],b=z.parentRow,d=0;d<z.values.length;d++)q=t(z.name,
+z.values[d],{type:z.type,parentRow:z.parentRow,isDeletable:z.isDeletable,index:d,defVal:z.defVal,countProperty:z.countProperty,size:z.size},0==d%2,z.flipBkg),b.parentNode.insertBefore(q,b.nextSibling),b=q;a.appendChild(k);A();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){g.getModel().beginUpdate();try{var d=g.getSelectionCells();for(b=0;b<d.length;b++){for(var c=g.getModel().getStyle(d[b]),n=0;n<m.length;n++)c=mxUtils.removeStylename(c,
 m[n]);var e=g.getModel().isVertex(d[b])?g.defaultVertexStyle:g.defaultEdgeStyle;null!=a?(c=mxUtils.setStyle(c,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,null)),c=mxUtils.setStyle(c,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,null)),c=mxUtils.setStyle(c,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(d[b])&&(c=mxUtils.setStyle(c,mxConstants.STYLE_FONTCOLOR,
 a.font||mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null)))):(c=mxUtils.setStyle(c,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,"#ffffff")),c=mxUtils.setStyle(c,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,"#000000")),c=mxUtils.setStyle(c,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),g.getModel().isVertex(d[b])&&(c=mxUtils.setStyle(c,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,
 null))));g.getModel().setStyle(d[b],c)}}finally{g.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?
@@ -7874,8 +7883,8 @@ b)};d.fill=!0;d.unitSize=mxRackContainer.unitSize|20;d.marginLeft=b.marginLeft||
 d.equalRows="1"==mxUtils.getValue(b,"equalRows",d.rowPercentages?"0":"1"),d.resizeParent="1"==mxUtils.getValue(b,"resizeParent","1"),d.border=b.tableBorder||d.border,d.marginLeft=b.marginLeft||0,d.marginRight=b.marginRight||0,d.marginTop=b.marginTop||0,d.marginBottom=b.marginBottom||0,d.autoAddCol="1"==mxUtils.getValue(b,"autoAddCol","0"),d.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",d.autoAddCol?"0":"1"),d.colWidths=b.colWidths||"100",d.rowHeights=b.rowHeights||"50",d}return g.apply(this,arguments)}};
 var v=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return v.apply(this,arguments)&&!mxClient.IS_SF};var t=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b=t.apply(this,arguments);if(null==b){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(F){null!=window.console&&console.log("Error in vars URL parameter: "+F)}null!=this.globalUrlVars&&(b=
 this.globalUrlVars[a])}return b};var y=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){y.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=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;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var B=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=
-function(){B.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var b=0;b<a.actions.length;b++)if(null!=a.actions[b].open)if(this.isCustomLink(a.actions[b].open)){if(!this.customLinkClicked(a.actions[b].open))return}else this.openLink(a.actions[b].open);this.model.beginUpdate();try{for(b=0;b<a.actions.length;b++)this.handleLinkAction(a.actions[b])}finally{this.model.endUpdate()}}};
+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;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var A=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=
+function(){A.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var b=0;b<a.actions.length;b++)if(null!=a.actions[b].open)if(this.isCustomLink(a.actions[b].open)){if(!this.customLinkClicked(a.actions[b].open))return}else this.openLink(a.actions[b].open);this.model.beginUpdate();try{for(b=0;b<a.actions.length;b++)this.handleLinkAction(a.actions[b])}finally{this.model.endUpdate()}}};
 Graph.prototype.handleLinkAction=function(a){var b=[];null!=a.select&&this.isEnabled()&&(b=this.getCellsForAction(a.select),this.setSelectionCells(b));null!=a.highlight&&(b=this.getCellsForAction(a.highlight),this.highlightCells(b,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!=
 a.scroll&&(b=this.getCellsForAction(a.scroll));0<b.length&&this.scrollCellToVisible(b[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var b=[];if(null!=a)for(var d=0;d<a.length;d++)if("*"==a[d])var g=this.getDefaultParent(),b=b.concat(this.model.filterDescendants(function(a){return a!=g},g));else{var c=this.model.getCell(a[d]);null!=c&&b.push(c)}return b};Graph.prototype.getCellsForTags=
 function(a,b,d){var g=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());d=null!=d?d:"tags";for(var c=0;c<b.length;c++)if(this.model.isVertex(b[c])||this.model.isEdge(b[c])){var m=null!=b[c].value&&"object"==typeof b[c].value?mxUtils.trim(b[c].value.getAttribute(d)||""):"",n=!0;if(0<m.length)for(var m=m.toLowerCase().split(" "),e=0;e<a.length&&n;e++)var x=mxUtils.trim(a[e]).toLowerCase(),n=n&&(0==x.length||0<=mxUtils.indexOf(m,x));else n=0==a.length;n&&g.push(b[c])}}return g};
@@ -7895,29 +7904,29 @@ mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basi
 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.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.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(a){var b=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?b="mxgraph.er":"sysML"==a.substring(0,5)&&(b="mxgraph.sysml"));return b};var n=mxMarker.createMarker;mxMarker.createMarker=function(a,b,d,g,c,m,e,x,t,v){if(null!=d&&null==mxMarker.markers[d]){var y=this.getPackageForType(d);null!=y&&mxStencilRegistry.getStencil(y)}return n.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function d(){k.value=Math.max(1,Math.min(e,Math.max(parseInt(k.value),
-parseInt(f.value))));f.value=Math.max(1,Math.min(e,Math.min(parseInt(k.value),parseInt(f.value))))}function g(b){function d(b,d,c){var m=b.getGraphBounds(),n=0,e=0,x=fa.get(),t=1/b.pageScale,v=B.checked;if(v)var t=parseInt(ca.value),y=parseInt(L.value),t=Math.min(x.height*y/(m.height/b.view.scale),x.width*t/(m.width/b.view.scale));else t=parseInt(A.value)/(100*b.pageScale),isNaN(t)&&(g=1/b.pageScale,A.value="100 %");x=mxRectangle.fromRectangle(x);x.width=Math.ceil(x.width*g);x.height=Math.ceil(x.height*
-g);t*=g;!v&&b.pageVisible?(m=b.getPageLayout(),n-=m.x*x.width,e-=m.y*x.height):v=!0;if(null==d){d=PrintDialog.createPrintPreview(b,t,x,0,n,e,v);d.pageSelector=!1;d.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(d.title=b.getTitle());var f=d.writeHead;d.writeHead=function(b){f.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var k=d.renderPage;d.renderPage=function(a,b,d,g,c,m){var n=
+parseInt(f.value))));f.value=Math.max(1,Math.min(e,Math.min(parseInt(k.value),parseInt(f.value))))}function g(b){function d(b,d,c){var m=b.getGraphBounds(),n=0,e=0,x=fa.get(),t=1/b.pageScale,v=A.checked;if(v)var t=parseInt(ca.value),f=parseInt(L.value),t=Math.min(x.height*f/(m.height/b.view.scale),x.width*t/(m.width/b.view.scale));else t=parseInt(B.value)/(100*b.pageScale),isNaN(t)&&(g=1/b.pageScale,B.value="100 %");x=mxRectangle.fromRectangle(x);x.width=Math.ceil(x.width*g);x.height=Math.ceil(x.height*
+g);t*=g;!v&&b.pageVisible?(m=b.getPageLayout(),n-=m.x*x.width,e-=m.y*x.height):v=!0;if(null==d){d=PrintDialog.createPrintPreview(b,t,x,0,n,e,v);d.pageSelector=!1;d.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(d.title=b.getTitle());var y=d.writeHead;d.writeHead=function(b){y.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var k=d.renderPage;d.renderPage=function(a,b,d,g,c,m){var n=
 mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var e=k.apply(this,arguments);mxClient.NO_FO=n;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:e.className="geDisableMathJax";return e}}d.open(null,null,c,!0)}else{x=b.background;if(null==x||""==x||x==mxConstants.NONE)x="#ffffff";d.backgroundColor=x;d.autoOrigin=v;d.appendGraph(b,t,n,e,c,!0)}return d}var g=parseInt(Y.value)/100;isNaN(g)&&(g=1,Y.value="100 %");var g=.75*
-g,m=f.value,n=k.value,e=!v.checked,t=null;e&&(e=m==x&&n==x);if(!e&&null!=a.pages&&a.pages.length){var y=0,e=a.pages.length-1;v.checked||(y=parseInt(m)-1,e=parseInt(n)-1);for(var l=y;l<=e;l++){var z=a.pages[l],m=z==a.currentPage?c:null;if(null==m){var m=a.createTemporaryGraph(c.getStylesheet()),n=!0,y=!1,q=null,p=null;null==z.viewState&&null==z.root&&a.updatePageRoot(z);null!=z.viewState&&(n=z.viewState.pageVisible,y=z.viewState.mathEnabled,q=z.viewState.background,p=z.viewState.backgroundImage);m.background=
-q;m.backgroundImage=null!=p?new mxImage(p.src,p.width,p.height):null;m.pageVisible=n;m.mathEnabled=y;var u=m.getGlobalVariable;m.getGlobalVariable=function(a){return"page"==a?z.getName():"pagenumber"==a?l+1:u.apply(this,arguments)};document.body.appendChild(m.container);a.updatePageRoot(z);m.model.setRoot(z.root)}t=d(m,t,l!=e);m!=c&&m.container.parentNode.removeChild(m.container)}}else t=d(c);null==t?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(e=t.wnd.document,
+g,m=f.value,n=k.value,e=!v.checked,t=null;e&&(e=m==x&&n==x);if(!e&&null!=a.pages&&a.pages.length){var y=0,e=a.pages.length-1;v.checked||(y=parseInt(m)-1,e=parseInt(n)-1);for(var l=y;l<=e;l++){var z=a.pages[l],m=z==a.currentPage?c:null;if(null==m){var m=a.createTemporaryGraph(c.getStylesheet()),n=!0,y=!1,p=null,q=null;null==z.viewState&&null==z.root&&a.updatePageRoot(z);null!=z.viewState&&(n=z.viewState.pageVisible,y=z.viewState.mathEnabled,p=z.viewState.background,q=z.viewState.backgroundImage);m.background=
+p;m.backgroundImage=null!=q?new mxImage(q.src,q.width,q.height):null;m.pageVisible=n;m.mathEnabled=y;var u=m.getGlobalVariable;m.getGlobalVariable=function(a){return"page"==a?z.getName():"pagenumber"==a?l+1:u.apply(this,arguments)};document.body.appendChild(m.container);a.updatePageRoot(z);m.model.setRoot(z.root)}t=d(m,t,l!=e);m!=c&&m.container.parentNode.removeChild(m.container)}}else t=d(c);null==t?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(e=t.wnd.document,
 e.writeln('<script type="text/x-mathjax-config">'),e.writeln("MathJax.Hub.Config({"),e.writeln("showMathMenu: false,"),e.writeln('messageStyle: "none",'),e.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),e.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),e.writeln('"HTML-CSS": {'),e.writeln("imageFont: null"),e.writeln("},"),e.writeln("TeX: {"),e.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),e.writeln("},"),
 e.writeln("tex2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("},"),e.writeln("asciimath2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("}"),e.writeln("});"),b&&(e.writeln("MathJax.Hub.Queue(function () {"),e.writeln("window.print();"),e.writeln("});")),e.writeln("\x3c/script>"),e.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&b&&PrintDialog.printPreview(t))}var c=a.editor.graph,
 m=document.createElement("div"),n=document.createElement("h3");n.style.width="100%";n.style.textAlign="center";n.style.marginTop="0px";mxUtils.write(n,b||mxResources.get("print"));m.appendChild(n);var e=1,x=1,t=document.createElement("div");t.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value","all");v.setAttribute("type","radio");v.setAttribute("name",
 "pages-printdialog");t.appendChild(v);n=document.createElement("span");mxUtils.write(n,mxResources.get("printAllPages"));t.appendChild(n);mxUtils.br(t);var y=v.cloneNode(!0);v.setAttribute("checked","checked");y.setAttribute("value","range");t.appendChild(y);n=document.createElement("span");mxUtils.write(n,mxResources.get("pages")+":");t.appendChild(n);var f=document.createElement("input");f.style.cssText="margin:0 8px 0 8px;";f.setAttribute("value","1");f.setAttribute("type","number");f.setAttribute("min",
 "1");f.style.width="50px";t.appendChild(f);n=document.createElement("span");mxUtils.write(n,mxResources.get("to"));t.appendChild(n);var k=f.cloneNode(!0);t.appendChild(k);mxEvent.addListener(f,"focus",function(){y.checked=!0});mxEvent.addListener(k,"focus",function(){y.checked=!0});mxEvent.addListener(f,"change",d);mxEvent.addListener(k,"change",d);if(null!=a.pages&&(e=a.pages.length,null!=a.currentPage))for(n=0;n<a.pages.length;n++)if(a.currentPage==a.pages[n]){x=n+1;f.value=x;k.value=x;break}f.setAttribute("max",
-e);k.setAttribute("max",e);1<e&&m.appendChild(t);var l=document.createElement("div");l.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");l.appendChild(z);n=document.createElement("span");mxUtils.write(n,mxResources.get("adjustTo"));l.appendChild(n);var A=document.createElement("input");A.style.cssText="margin:0 8px 0 8px;";A.setAttribute("value","100 %");A.style.width=
-"50px";l.appendChild(A);mxEvent.addListener(A,"focus",function(){z.checked=!0});m.appendChild(l);var t=t.cloneNode(!1),B=z.cloneNode(!0);B.setAttribute("value","fit");z.setAttribute("checked","checked");n=document.createElement("div");n.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";n.appendChild(B);t.appendChild(n);l=document.createElement("table");l.style.display="inline-block";var q=document.createElement("tbody"),p=document.createElement("tr"),u=p.cloneNode(!0),
+e);k.setAttribute("max",e);1<e&&m.appendChild(t);var l=document.createElement("div");l.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");l.appendChild(z);n=document.createElement("span");mxUtils.write(n,mxResources.get("adjustTo"));l.appendChild(n);var B=document.createElement("input");B.style.cssText="margin:0 8px 0 8px;";B.setAttribute("value","100 %");B.style.width=
+"50px";l.appendChild(B);mxEvent.addListener(B,"focus",function(){z.checked=!0});m.appendChild(l);var t=t.cloneNode(!1),A=z.cloneNode(!0);A.setAttribute("value","fit");z.setAttribute("checked","checked");n=document.createElement("div");n.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";n.appendChild(A);t.appendChild(n);l=document.createElement("table");l.style.display="inline-block";var p=document.createElement("tbody"),q=document.createElement("tr"),u=q.cloneNode(!0),
 P=document.createElement("td"),Q=P.cloneNode(!0),X=P.cloneNode(!0),R=P.cloneNode(!0),S=P.cloneNode(!0),Z=P.cloneNode(!0);P.style.textAlign="right";R.style.textAlign="right";mxUtils.write(P,mxResources.get("fitTo"));var ca=document.createElement("input");ca.style.cssText="margin:0 8px 0 8px;";ca.setAttribute("value","1");ca.setAttribute("min","1");ca.setAttribute("type","number");ca.style.width="40px";Q.appendChild(ca);n=document.createElement("span");mxUtils.write(n,mxResources.get("fitToSheetsAcross"));
-X.appendChild(n);mxUtils.write(R,mxResources.get("fitToBy"));var L=ca.cloneNode(!0);S.appendChild(L);mxEvent.addListener(ca,"focus",function(){B.checked=!0});mxEvent.addListener(L,"focus",function(){B.checked=!0});n=document.createElement("span");mxUtils.write(n,mxResources.get("fitToSheetsDown"));Z.appendChild(n);p.appendChild(P);p.appendChild(Q);p.appendChild(X);u.appendChild(R);u.appendChild(S);u.appendChild(Z);q.appendChild(p);q.appendChild(u);l.appendChild(q);t.appendChild(l);m.appendChild(t);
+X.appendChild(n);mxUtils.write(R,mxResources.get("fitToBy"));var L=ca.cloneNode(!0);S.appendChild(L);mxEvent.addListener(ca,"focus",function(){A.checked=!0});mxEvent.addListener(L,"focus",function(){A.checked=!0});n=document.createElement("span");mxUtils.write(n,mxResources.get("fitToSheetsDown"));Z.appendChild(n);q.appendChild(P);q.appendChild(Q);q.appendChild(X);u.appendChild(R);u.appendChild(S);u.appendChild(Z);p.appendChild(q);p.appendChild(u);l.appendChild(p);t.appendChild(l);m.appendChild(t);
 t=document.createElement("div");n=document.createElement("div");n.style.fontWeight="bold";n.style.marginBottom="12px";mxUtils.write(n,mxResources.get("paperSize"));t.appendChild(n);n=document.createElement("div");n.style.marginBottom="12px";var fa=PageSetupDialog.addPageFormatPanel(n,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);t.appendChild(n);n=document.createElement("span");mxUtils.write(n,mxResources.get("pageScale"));t.appendChild(n);var Y=document.createElement("input");
 Y.style.cssText="margin:0 8px 0 8px;";Y.setAttribute("value","100 %");Y.style.width="60px";t.appendChild(Y);m.appendChild(t);n=document.createElement("div");n.style.cssText="text-align:right;margin:48px 0 0 0;";t=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});t.className="geBtn";a.editor.cancelFirst&&n.appendChild(t);a.isOffline()||(l=mxUtils.button(mxResources.get("help"),function(){c.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),l.className="geBtn",
 n.appendChild(l));PrintDialog.previewEnabled&&(l=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();g(!1)}),l.className="geBtn",n.appendChild(l));l=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();g(!0)});l.className="geBtn gePrimaryBtn";n.appendChild(l);a.editor.cancelFirst||n.appendChild(t);m.appendChild(n);this.container=m};var x=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=
 this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),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)):(x.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))}})();
-var ErrorDialog=function(b,c,a,e,k,f,l,q,p,u,d){p=null!=p?p:!0;var g=document.createElement("div");g.style.textAlign="center";if(null!=c){var m=document.createElement("div");m.style.padding="0px";m.style.margin="0px";m.style.fontSize="18px";m.style.paddingBottom="16px";m.style.marginBottom="16px";m.style.borderBottom="1px solid #c0c0c0";m.style.color="gray";m.style.whiteSpace="nowrap";m.style.textOverflow="ellipsis";m.style.overflow="hidden";mxUtils.write(m,c);m.setAttribute("title",c);g.appendChild(m)}c=
-document.createElement("div");c.style.padding="6px";c.innerHTML=a;g.appendChild(c);a=document.createElement("div");a.style.marginTop="16px";a.style.textAlign="center";null!=f&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();f()}),c.className="geBtn",a.appendChild(c),a.style.textAlign="center");null!=u&&(u=mxUtils.button(u,function(){null!=d&&d()}),u.className="geBtn",a.appendChild(u));var v=mxUtils.button(e,function(){p&&b.hideDialog();null!=k&&k()});v.className="geBtn";a.appendChild(v);
-null!=l&&(e=mxUtils.button(l,function(){p&&b.hideDialog();null!=q&&q()}),e.className="geBtn gePrimaryBtn",a.appendChild(e));this.init=function(){v.focus()};g.appendChild(a);this.container=g};
-(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,a,e){e.ui=b.ui;return a};b.afterDecode=function(b,a,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);null!=e.mathEnabled&&(e.mathEnabled=!e.mathEnabled);null!=e.shadowVisible&&(e.shadowVisible=!e.shadowVisible);return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="10.1.7";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,e,t){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,e,t);else if(EditorUi.enableLogging)try{if(a!=
+var ErrorDialog=function(b,c,a,e,k,f,l,p,q,u,d){q=null!=q?q:!0;var g=document.createElement("div");g.style.textAlign="center";if(null!=c){var m=document.createElement("div");m.style.padding="0px";m.style.margin="0px";m.style.fontSize="18px";m.style.paddingBottom="16px";m.style.marginBottom="16px";m.style.borderBottom="1px solid #c0c0c0";m.style.color="gray";m.style.whiteSpace="nowrap";m.style.textOverflow="ellipsis";m.style.overflow="hidden";mxUtils.write(m,c);m.setAttribute("title",c);g.appendChild(m)}c=
+document.createElement("div");c.style.padding="6px";c.innerHTML=a;g.appendChild(c);a=document.createElement("div");a.style.marginTop="16px";a.style.textAlign="center";null!=f&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();f()}),c.className="geBtn",a.appendChild(c),a.style.textAlign="center");null!=u&&(u=mxUtils.button(u,function(){null!=d&&d()}),u.className="geBtn",a.appendChild(u));var v=mxUtils.button(e,function(){q&&b.hideDialog();null!=k&&k()});v.className="geBtn";a.appendChild(v);
+null!=l&&(e=mxUtils.button(l,function(){q&&b.hideDialog();null!=p&&p()}),e.className="geBtn gePrimaryBtn",a.appendChild(e));this.init=function(){v.focus()};g.appendChild(a);this.container=g};
+(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,a,e){e.ui=b.ui;return a};b.afterDecode=function(b,a,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);null!=e.mathEnabled&&(e.mathEnabled=!e.mathEnabled);null!=e.shadowVisible&&(e.shadowVisible=!e.shadowVisible);return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="10.1.8";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,e,t){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,e,t);else if(EditorUi.enableLogging)try{if(a!=
 EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var d=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",g=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=g+"/log?severity="+d+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+
 ":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=t&&null!=t.stack?"&stack="+encodeURIComponent(t.stack):"")}}catch(n){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):
 "")}catch(m){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(m){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);
@@ -7933,7 +7942,7 @@ n.style.fontFamily="Helvetica, Arial",n.style.fontSize="9pt",n.style.padding="6p
 d.status=n,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(n.style.left=Math.round(Math.max(0,a-n.offsetWidth/2))+"px",n.style.top=Math.round(Math.max(0,b+70-n.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,m)}));this.stop();return a}),n=!0);return n};var m=d.stop;d.stop=function(){m.call(this);this.active=!1;null!=d.status&&(d.status.parentNode.removeChild(d.status),d.status=null)};
 d.pause=function(){return function(){}};return d};EditorUi.parsePng=function(a,b,c){function d(a,b){var d=m;m+=b;return a.substring(d,m)}function g(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var m=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(d(a,4),"IHDR"!=d(a,4))null!=c&&c();else{d(a,17);do{c=g(a);var e=d(a,4);if(null!=b&&b(m-8,e,c))break;value=d(a,c);d(a,4);if("IEND"==e)break}while(c)}};
 EditorUi.prototype.isCompatibleString=function(a){try{var b=mxUtils.parseXml(a),d=this.editor.extractGraphModel(b.documentElement,!0);return null!=d&&0==d.getElementsByTagName("parsererror").length}catch(v){}return!1};var b=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(a){var d=b.apply(this,arguments);if(null==d)try{var c=a.indexOf("&lt;mxfile ");if(0<=c){var e=a.lastIndexOf("&lt;/mxfile&gt;");e>c&&(d=a.substring(c,e+15).replace(/&gt;/g,">").replace(/&lt;/g,
-"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var t=mxUtils.parseXml(a),f=this.editor.extractGraphModel(t.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),d=null!=f?mxUtils.getXml(f):""}catch(B){}return d};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=
+"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var t=mxUtils.parseXml(a),f=this.editor.extractGraphModel(t.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),d=null!=f?mxUtils.getXml(f):""}catch(A){}return d};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=
 function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a){b=this.editor.graph;b.model.beginUpdate();try{var d=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var e=c.length-1;0<=e;e--){var f=this.updatePageRoot(new DiagramPage(c[e]));
 null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[e+1]));b.model.execute(new ChangePage(this,f,0==e?f:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=
 this.editor.graph.model.root);if(null!=d)for(e=0;e<d.length;e++)b.model.execute(new ChangePage(this,d[e],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,e,t,f,k,n,x,l){b=null!=b?b:this.editor.graph;t=null!=t?t:!1;x=null!=x?x:!0;var d,g=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":g=d=e;if(null==a)return"";var m=a;if("mxfile"!=m.nodeName.toLowerCase()){var v=b.zapGremlins(mxUtils.getXml(a)),m=b.compress(v);if(b.decompress(m)!=
@@ -7959,14 +7968,14 @@ b[a].setAttribute("id",a);var d=new DiagramPage(b[a]);null==d.getName()&&d.setNa
 this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)};EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
 0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a,b,c,e,t,f,k){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!t),g=d+"."+a;if("xml"==a){var m='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(e)):this.getFileData(!0,null,null,null,e,t));this.saveData(g,a,m,"text/xml")}else if("html"==a)m=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,
 a,m,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?g=d+".png":"jpeg"==a&&(g=d+".jpg"),this.saveRequest(g,a,mxUtils.bind(this,function(b,d){try{var c=this.editor.graph.pageVisible;null!=f&&(this.editor.graph.pageVisible=f);var g=this.createDownloadRequest(b,a,e,d,k,t);this.editor.graph.pageVisible=c;return g}catch(C){this.handleError(C)}}));else{var v=null,y=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(g,
-"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(v)}))});if("svg"==a){var l=this.editor.graph.background;if(k||l==mxConstants.NONE)l=null;var B=this.editor.graph.getSvg(l,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(B);this.convertImages(B,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();y('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+
+"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(v)}))});if("svg"==a){var l=this.editor.graph.background;if(k||l==mxConstants.NONE)l=null;var A=this.editor.graph.getSvg(l,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(A);this.convertImages(A,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();y('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+
 mxUtils.getXml(a))})))}else g=d+".svg",v=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();y(a)}),e)}}catch(H){this.handleError(H)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,e,t,f){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==f?!1:"xmlpng"!=b);var g="",m="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==f&&(m="&allPages=1");if("xmlpng"==b&&
 (d="1",b="png",null!=this.pages&&null!=this.currentPage))for(f=0;f<this.pages.length;f++)if(this.pages[f]==this.currentPage){g="&from="+f;break}f=this.editor.graph.background;"png"==b&&t&&(f=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+g+m+"&bg="+(null!=f?f:mxConstants.NONE)+"&base64="+e+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,
 b,c){var d=window.location.hash,g=mxUtils.bind(this,function(c){var g=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<g.length&&(g+="\n"),g+=c);c=new LocalFile(this,"csv"!=a.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(g,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));
 if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,m=null,t=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),f()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),f=mxUtils.bind(this,function(){window.clearTimeout(m);
 m=window.setTimeout(t,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){f();t()}));f();t()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){g(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else g("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||e.warningImage,a.tooltip,a.align,
 a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,d){c.alert(a.tooltip)});return b}var d=null,c=this;if(null!=a&&0<a.length&&(d=mxUtils.parseXml(a),a=null!=d?d.documentElement:null,null!=a&&"updates"==a.nodeName)){var e=this.editor.graph,f=e.getModel();f.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var n=f.getCell(a.getAttribute("id"));if(null!=n){try{var x=a.getAttribute("value");if(null!=x){var l=mxUtils.parseXml(x).documentElement;if(null!=l)if("1"==
-l.getAttribute("replace-value"))f.setValue(n,l);else for(var A=l.attributes,q=0;q<A.length;q++)e.setAttributeForCell(n,A[q].nodeName,0<A[q].nodeValue.length?A[q].nodeValue:null)}}catch(J){null!=window.console&&console.log("Error in value for "+n.id+": "+J)}try{var p=a.getAttribute("style");null!=p&&e.model.setStyle(n,p)}catch(J){null!=window.console&&console.log("Error in style for "+n.id+": "+J)}try{var u=a.getAttribute("icon");if(null!=u){var H=0<u.length?JSON.parse(u):null;null!=H&&H.append||e.removeCellOverlays(n);
+l.getAttribute("replace-value"))f.setValue(n,l);else for(var B=l.attributes,p=0;p<B.length;p++)e.setAttributeForCell(n,B[p].nodeName,0<B[p].nodeValue.length?B[p].nodeValue:null)}}catch(J){null!=window.console&&console.log("Error in value for "+n.id+": "+J)}try{var q=a.getAttribute("style");null!=q&&e.model.setStyle(n,q)}catch(J){null!=window.console&&console.log("Error in style for "+n.id+": "+J)}try{var u=a.getAttribute("icon");if(null!=u){var H=0<u.length?JSON.parse(u):null;null!=H&&H.append||e.removeCellOverlays(n);
 null!=H&&e.addCellOverlay(n,b(H))}}catch(J){null!=window.console&&console.log("Error in icon for "+n.id+": "+J)}try{var D=a.getAttribute("geometry");if(null!=D){var D=JSON.parse(D),K=e.getCellGeometry(n);if(null!=K){K=K.clone();for(key in D){var I=parseFloat(D[key]);"dx"==key?K.x+=I:"dy"==key?K.y+=I:"dw"==key?K.width+=I:"dh"==key?K.height+=I:K[key]=parseFloat(D[key])}e.model.setGeometry(n,K)}}}catch(J){null!=window.console&&console.log("Error in icon for "+n.id+": "+J)}}}else if("model"==a.nodeName){for(var C=
 a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C=C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,f)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(e.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{f.endUpdate()}null!=
 k&&this.chromelessResize&&this.chromelessResize(!0,k)}return d};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",g=d.lastIndexOf(".");0<=g&&(c=d.substring(g),d=d.substring(0,g));if(b)var e=new Date,g=e.getFullYear(),f=e.getMonth()+1,n=e.getDate(),x=e.getHours(),k=e.getMinutes(),e=e.getSeconds(),d=d+(" "+(g+"-"+f+"-"+n+"-"+x+"-"+k+"-"+e));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var b=
@@ -7987,13 +7996,13 @@ e=mxUtils.bind(this,function(b,d){0==b.length&&a.isEditable()?(null==g&&(g=docum
 mxUtils.bind(this,function(){b=this.convertDataUri(b);var d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(d+="aspect=fixed;");return this.sidebar.createVertexTemplate(d+"image="+b,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var b=this.stringToCells(this.editor.graph.decompress(a.xml));return this.sidebar.createVertexTemplateFromCells(b,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[m]);
 c=null!=c&&0<c.length?c:a.getTitle();var n=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){e(b,a)}));this.repositionLibrary(d);var x=n.parentNode.previousSibling;c=x.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&x.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var f=document.createElement("div");f.style.position="absolute";f.style.right="0px";f.style.top="0px";f.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(f.style.backgroundColor=
 "inherit");x.style.position="relative";var k=document.createElement("img");k.setAttribute("src",Dialog.prototype.closeImage);k.setAttribute("title",mxResources.get("close"));k.setAttribute("valign","absmiddle");k.setAttribute("border","0");k.style.margin="0 3px";var l=null;if(".scratchpad"!=a.title||this.closableScratchpad)f.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var d=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=l?this.confirm(mxResources.get("allChangesLost"),
-null,d,mxResources.get("cancel"),mxResources.get("discardChanges")):d();mxEvent.consume(b)}}));if(a.isEditable()){var q=this.editor.graph,p=null,u=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),n,b,a,a.getMode());mxEvent.consume(d)}),D=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=p&&null!=p.parentNode&&p.parentNode.removeChild(p),p=k.cloneNode(!1),p.setAttribute("src",Editor.spinImage),p.setAttribute("title",mxResources.get("saving")),p.style.cursor="default",
-p.style.marginRight="2px",p.style.marginTop="-2px",f.insertBefore(p,f.firstChild),x.style.paddingRight=18*f.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=p&&null!=p.parentNode&&(p.parentNode.removeChild(p),x.style.paddingRight=18*f.childNodes.length+"px")})):null==l&&(l=k.cloneNode(!1),l.setAttribute("src",IMAGE_PATH+"/download.png"),l.setAttribute("title",mxResources.get("save")),f.insertBefore(l,f.firstChild),mxEvent.addListener(l,"click",mxUtils.bind(this,
-function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==l||a.isModified()||(x.style.paddingRight=18*f.childNodes.length+"px",l.parentNode.removeChild(l),l=null)});mxEvent.consume(d)})),x.style.paddingRight=18*f.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=q.cloneCells(mxUtils.sortCells(q.model.getTopmostCells(a)));for(var m=0;m<a.length;m++){var x=q.getCellGeometry(a[m]);null!=x&&x.translate(-d.x,-d.y)}n.appendChild(this.sidebar.createVertexTemplateFromCells(a,
-d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);D(c);null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null)}),I=mxUtils.bind(this,function(a){if(q.isSelectionEmpty())q.getRubberband().isActive()?(q.getRubberband().execute(a),q.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=
-q.getSelectionCells(),d=q.view.getBounds(b),c=q.view.scale;d.x/=c;d.y/=c;d.width/=c;d.height/=c;d.x-=q.view.translate.x;d.y-=q.view.translate.y;K(b,d)}mxEvent.consume(a)});n.style.border="3px solid transparent";mxEvent.addGestureListeners(n,function(){},mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="hidden",null!=g?g.style.border="3px dotted rgb(254, 137, 12)":n.style.border="3px dotted rgb(254, 137, 12)",
-n.style.cursor="copy",q.panningManager.stop(),q.autoScroll=!1,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!1),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler&&(n.style.border="3px solid transparent",null!=g&&(g.style.border="3px dotted lightGray"),n.style.cursor="default",this.sidebar.showTooltips=!0,q.panningManager.stop(),q.graphHandler.reset(),
-q.isMouseDown=!1,q.autoScroll=!0,I(a),mxEvent.consume(a))}));mxEvent.addListener(n,"mouseleave",mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="visible",n.style.border="3px solid transparent",n.style.cursor="",q.autoScroll=!0,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!0),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="visible"),null!=g&&(g.style.border="3px dotted lightGray"))}));Graph.fileSupport&&
+null,d,mxResources.get("cancel"),mxResources.get("discardChanges")):d();mxEvent.consume(b)}}));if(a.isEditable()){var p=this.editor.graph,q=null,u=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),n,b,a,a.getMode());mxEvent.consume(d)}),D=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q),q=k.cloneNode(!1),q.setAttribute("src",Editor.spinImage),q.setAttribute("title",mxResources.get("saving")),q.style.cursor="default",
+q.style.marginRight="2px",q.style.marginTop="-2px",f.insertBefore(q,f.firstChild),x.style.paddingRight=18*f.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=q&&null!=q.parentNode&&(q.parentNode.removeChild(q),x.style.paddingRight=18*f.childNodes.length+"px")})):null==l&&(l=k.cloneNode(!1),l.setAttribute("src",IMAGE_PATH+"/download.png"),l.setAttribute("title",mxResources.get("save")),f.insertBefore(l,f.firstChild),mxEvent.addListener(l,"click",mxUtils.bind(this,
+function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==l||a.isModified()||(x.style.paddingRight=18*f.childNodes.length+"px",l.parentNode.removeChild(l),l=null)});mxEvent.consume(d)})),x.style.paddingRight=18*f.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=p.cloneCells(mxUtils.sortCells(p.model.getTopmostCells(a)));for(var m=0;m<a.length;m++){var x=p.getCellGeometry(a[m]);null!=x&&x.translate(-d.x,-d.y)}n.appendChild(this.sidebar.createVertexTemplateFromCells(a,
+d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);D(c);null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null)}),I=mxUtils.bind(this,function(a){if(p.isSelectionEmpty())p.getRubberband().isActive()?(p.getRubberband().execute(a),p.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=
+p.getSelectionCells(),d=p.view.getBounds(b),c=p.view.scale;d.x/=c;d.y/=c;d.width/=c;d.height/=c;d.x-=p.view.translate.x;d.y-=p.view.translate.y;K(b,d)}mxEvent.consume(a)});n.style.border="3px solid transparent";mxEvent.addGestureListeners(n,function(){},mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.panningManager&&null!=p.graphHandler.shape&&(p.graphHandler.shape.node.style.visibility="hidden",null!=g?g.style.border="3px dotted rgb(254, 137, 12)":n.style.border="3px dotted rgb(254, 137, 12)",
+n.style.cursor="copy",p.panningManager.stop(),p.autoScroll=!1,null!=p.graphHandler.guide&&p.graphHandler.guide.setVisible(!1),null!=p.graphHandler.hint&&(p.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.panningManager&&null!=p.graphHandler&&(n.style.border="3px solid transparent",null!=g&&(g.style.border="3px dotted lightGray"),n.style.cursor="default",this.sidebar.showTooltips=!0,p.panningManager.stop(),p.graphHandler.reset(),
+p.isMouseDown=!1,p.autoScroll=!0,I(a),mxEvent.consume(a))}));mxEvent.addListener(n,"mouseleave",mxUtils.bind(this,function(a){p.isMouseDown&&null!=p.graphHandler.shape&&(p.graphHandler.shape.node.style.visibility="visible",n.style.border="3px solid transparent",n.style.cursor="",p.autoScroll=!0,null!=p.graphHandler.guide&&p.graphHandler.guide.setVisible(!0),null!=p.graphHandler.hint&&(p.graphHandler.hint.style.visibility="visible"),null!=g&&(g.style.border="3px dotted lightGray"))}));Graph.fileSupport&&
 (mxEvent.addListener(n,"dragover",mxUtils.bind(this,function(a){null!=g?g.style.border="3px dotted rgb(254, 137, 12)":n.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";n.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(n,"drop",mxUtils.bind(this,function(a){n.style.border="3px solid transparent";n.style.cursor="";null!=g&&(g.style.border="3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,
 0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,m,x,f,t,k,v,y){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,f,t),d)],d[0].vertex=!0,K(d,new mxRectangle(0,0,f,t),a,mxEvent.isAltDown(a)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<b.length&&(g.parentNode.removeChild(g),g=null);else{var l=!1,z=mxUtils.bind(this,function(d,
 c){if(null!=d&&"text/xml"==c){var m=mxUtils.parseXml(d);if("mxlibrary"==m.documentElement.nodeName)try{var x=JSON.parse(mxUtils.getTextContent(m.documentElement));e(x,n);b=b.concat(x);D(a);this.spinner.stop();l=!0}catch(L){}else if("mxfile"==m.documentElement.nodeName)try{for(var f=m.documentElement.getElementsByTagName("diagram"),m=0;m<f.length;m++){var x=mxUtils.getTextContent(f[m]),t=this.stringToCells(this.editor.graph.decompress(x)),k=this.editor.graph.getBoundingBoxFromGeometry(t);K(t,new mxRectangle(0,
@@ -8012,7 +8021,7 @@ this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var
 "3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=
 function(a,b,c,e){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=a&&null!=a.error?a.error:a;if(null!=g||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok"),n=null;b=null!=b?b:mxResources.get("error");if(null!=g)if(null!=g.retry&&(m=mxResources.get("cancel"),n=function(){d();g.retry()}),404==g.code||404==g.status||403==g.code){a=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):
 mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var x=window.location.hash;null!=x&&"#G"==x.substring(0,2)&&(x=x.substring(2),a+='<br><a href="https://drive.google.com/open?id='+x+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=g.message?a=mxUtils.htmlEntities(g.message):null!=g.response&&null!=g.response.error?a=mxUtils.htmlEntities(g.response.error):"undefined"!==window.App&&(g.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")):
-g.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,m,c,n,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,f,k,l,n,x,z,A,q,p){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,f,k,l,q,n,x);this.showDialog(a.container,z||340,A||(null!=b&&120<b.length?180:150),!0,!1,p);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container,
+g.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,m,c,n,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,f,k,l,n,x,z,B,p,q){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,f,k,l,p,n,x);this.showDialog(a.container,z||340,B||(null!=b&&120<b.length?180:150),!0,!1,q);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container,
 340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,f,k){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,f);this.showDialog(a.container,340,90,!0,k);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||
 !this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d,"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a,
 b,c){var d="jpeg"==c?"jpg":c,g=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(g,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!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&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,
@@ -8020,7 +8029,7 @@ b){var d=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));d.texta
 c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var d=document.createElement("a"),g=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof d.download;if(mxClient.IS_GC)var n=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),g=65==(n?parseInt(n[2],10):!1)?!1:g;if(g||this.isOffline()){d.href=URL.createObjectURL(e?this.base64ToBlob(a,c):new Blob([a],{type:c}));g?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},
 0),d.click(),d.parentNode.removeChild(d)}catch(x){}}else this.createEchoRequest(a,b,c,e,f).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,f,k){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=f?"&format="+f:"")+(null!=k?"&base64="+k:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,g=Math.ceil(c/1024),e=Array(g),
 f=0;f<g;++f){for(var n=1024*f,x=Math.min(n+1024,c),k=Array(x-n),l=0;n<x;++l,++n)k[l]=d[n].charCodeAt(0);e[f]=new Uint8Array(k)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,f,k,l){k=null!=k?k:!1;l=null!=l?l:"vsdx"!=f&&(!mxClient.IS_IOS||!navigator.standalone);f=this.getServiceCount(k);b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){try{if("_blank"==d)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var g=window.open("about:blank");
-null==g?mxUtils.popup(a,!0):(g.document.write(mxUtils.htmlEntities(a,!1)),g.document.close())}else this.openInNewWindow(a,c,e);else d==App.MODE_DEVICE||"download"==d?this.doSaveLocalFile(a,b,c,e):null!=b&&0<b.length&&this.pickFolder(d,mxUtils.bind(this,function(g){try{this.exportFile(a,b,c,e,d,g)}catch(F){this.handleError(F)}}))}catch(A){this.handleError(A)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,l,null,1<f,4<f&&(!k||6>f)?3:4,
+null==g?mxUtils.popup(a,!0):(g.document.write(mxUtils.htmlEntities(a,!1)),g.document.close())}else this.openInNewWindow(a,c,e);else d==App.MODE_DEVICE||"download"==d?this.doSaveLocalFile(a,b,c,e):null!=b&&0<b.length&&this.pickFolder(d,mxUtils.bind(this,function(g){try{this.exportFile(a,b,c,e,d,g)}catch(F){this.handleError(F)}}))}catch(B){this.handleError(B)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,k,l,null,1<f,4<f&&(!k||6>f)?3:4,
 a,c,e);this.showDialog(b.container,420,1==f?160:4<f?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+
 b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var a=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(b){if(this.isExportToCanvas()){this.exportDialog=null;var d=b(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=
 null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var c=d.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";
@@ -8030,7 +8039,7 @@ mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(
 c,e,f){this.isLocalFileSave()?this.saveLocalFile(c,a,e,f,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,e,f,b,d)}),c,f,e)};EditorUi.prototype.saveRequest=function(a,b,c,e,f,k,l){l=null!=l?l:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var g=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==
 App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){k=null!=k?k:"pdf"==b?"application/pdf":"image/"+b;if(null!=e)try{this.exportFile(e,a,k,!0,d,c)}catch(E){this.handleError(E)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),a,k,!0,d,c)}catch(E){this.handleError(E)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
 function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,l,null,1<d,4<d?3:4,e,k,f);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,e,f,k){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,e,f,k,l,
-n,x,z){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var g=this.editor.graph.getSvg(d,a,l,n,null,c,null,null,"blank"==z?"_blank":"self"==z?"_top":null);e&&this.editor.graph.addSvgShadow(g);var m=this.getBaseFilename()+".svg",t=mxUtils.bind(this,function(a){this.spinner.stop();f&&a.setAttribute("content",this.getFileData(!0,null,
+n,x,p){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var g=this.editor.graph.getSvg(d,a,l,n,null,c,null,null,"blank"==p?"_blank":"self"==p?"_top":null);e&&this.editor.graph.addSvgShadow(g);var m=this.getBaseFilename()+".svg",t=mxUtils.bind(this,function(a){this.spinner.stop();f&&a.setAttribute("content",this.getFileData(!0,null,
 null,null,c,x));if(null!=this.editor.fontCss){var b=a.ownerDocument,b=null!=b.createElementNS?b.createElementNS(mxConstants.NS_SVG,"style"):b.createElement("style");b.setAttribute("type","text/css");mxUtils.setTextContent(b,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(b)}var d='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||d.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",d,"image/svg+xml"):
 this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(d)}))});this.convertMath(this.editor.graph,g,!1,mxUtils.bind(this,function(){k?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(g,t,this.thumbImageCache)):t(g)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,e,f,k,l){return this.addCheckbox(a,c,e,f,k,l,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,e,f,k,l,n){k=null!=k?k:!0;var d=document.createElement("input");
 d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",l?"radio":"checkbox");l="geCheckbox-"+Editor.guid();d.id=l;null!=n&&d.setAttribute("name",n);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);e&&d.setAttribute("disabled","disabled");k&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",l),a.appendChild(c),f||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+
@@ -8041,54 +8050,54 @@ mxResources.get("custom")+"...");e.appendChild(c);a.appendChild(e);mxEvent.addLi
 g.setAttribute("value","self");mxUtils.write(g,mxResources.get("openInThisWindow"));c.appendChild(g);b&&(g=document.createElement("option"),g.setAttribute("value","frame"),mxUtils.write(g,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),c.appendChild(g));a.appendChild(c);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",f=null,f=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;d()});mxEvent.consume(a)}));d();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";a.appendChild(f);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,e,f,k,l,n){var d=this.getCurrentFile(),g=[];e&&(g.push("lightbox=1"),"auto"!=a&&g.push("target="+
 a),null!=b&&b!=mxConstants.NONE&&g.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=f&&0<f.length&&g.push("edit="+encodeURIComponent(f)),k&&g.push("layers=1"),this.editor.graph.foldingEnabled&&g.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&g.push("page="+a));a=!0;null!=l?c="#U"+encodeURIComponent(l):(d=this.getCurrentFile(),n||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):
-(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&g.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<g.length?"?"+g.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,f,k,l,n,x,q,A){this.getBasenames();var d={};""!=f&&f!=mxConstants.NONE&&(d.highlight=f);"auto"!==e&&(d.target=e);x||(d.lightbox=
-!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];l&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);n&&c.push("layers");0<c.length&&(x&&c.push("lightbox"),d.toolbar=c.join(" "));null!=q&&0<q.length&&(d.edit=q);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!l);b='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":
-"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";A(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,e){var d=document.createElement("div");
+(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&g.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<g.length?"?"+g.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,f,k,l,n,x,p,B){this.getBasenames();var d={};""!=f&&f!=mxConstants.NONE&&(d.highlight=f);"auto"!==e&&(d.target=e);x||(d.lightbox=
+!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];l&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);n&&c.push("layers");0<c.length&&(x&&c.push("lightbox"),d.toolbar=c.join(" "));null!=p&&0<p.length&&(d.edit=p);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!l);b='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":
+"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";B(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,e){var d=document.createElement("div");
 d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var f=document.createElement("div");f.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var n=document.createElement("input");n.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";n.setAttribute("value","url");n.setAttribute("type","radio");n.setAttribute("name",
 "type-embedhtmldialog");g=n.cloneNode(!0);g.setAttribute("value","copy");f.appendChild(g);var m=document.createElement("span");mxUtils.write(m,mxResources.get("includeCopyOfMyDiagram"));f.appendChild(m);mxUtils.br(f);f.appendChild(n);m=document.createElement("span");mxUtils.write(m,mxResources.get("publicDiagramUrl"));f.appendChild(m);var k=this.getCurrentFile();null==c&&null!=k&&k.constructor==window.DriveFile&&(m=document.createElement("a"),m.style.paddingLeft="12px",m.style.color="gray",m.setAttribute("href",
-"javascript:void(0);"),mxUtils.write(m,mxResources.get("share")),f.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));g.setAttribute("checked","checked");null==c&&n.setAttribute("disabled","disabled");d.appendChild(f);var l=this.addLinkSection(d),v=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";
-q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value="100%";d.appendChild(q);var p=this.addCheckbox(d,mxResources.get("fit"),!0),f=null!=this.pages&&1<this.pages.length,u=u=this.addCheckbox(d,mxResources.get("allPages"),f,!f),D=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),I=this.addEditButton(d,K),C=I.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"):
-C.setAttribute("disabled","disabled");C.checked&&K.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(n.checked?c:null,v.checked,q.value,l.getTarget(),l.getColor(),p.checked,u.checked,D.checked,K.checked,I.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,f,k){var d=document.createElement("div");d.style.whiteSpace=
+"javascript:void(0);"),mxUtils.write(m,mxResources.get("share")),f.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));g.setAttribute("checked","checked");null==c&&n.setAttribute("disabled","disabled");d.appendChild(f);var l=this.addLinkSection(d),v=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";
+p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value="100%";d.appendChild(p);var q=this.addCheckbox(d,mxResources.get("fit"),!0),f=null!=this.pages&&1<this.pages.length,u=u=this.addCheckbox(d,mxResources.get("allPages"),f,!f),D=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),I=this.addEditButton(d,K),C=I.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"):
+C.setAttribute("disabled","disabled");C.checked&&K.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(n.checked?c:null,v.checked,p.value,l.getTarget(),l.getColor(),q.checked,u.checked,D.checked,K.checked,I.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,f,k){var d=document.createElement("div");d.style.whiteSpace=
 "nowrap";var g=document.createElement("h3");mxUtils.write(g,a||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var m=this.getCurrentFile(),g="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=m&&m.constructor==window.DriveFile&&!b){a=80;var g="https://desk.draw.io/support/solutions/articles/16000039384",t=document.createElement("div");t.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";
 var l=document.createElement("div");l.style.whiteSpace="normal";mxUtils.write(l,mxResources.get("linkAccountRequired"));t.appendChild(l);l=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(m.getId())}));l.style.marginTop="12px";l.className="geBtn";t.appendChild(l);d.appendChild(t);l=document.createElement("a");l.style.paddingLeft="12px";l.style.color="gray";l.style.fontSize="11px";l.setAttribute("href","javascript:void(0);");mxUtils.write(l,mxResources.get("check"));
 t.appendChild(l);mxEvent.addListener(l,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var v=null,y=null;if(null!=c||null!=e)a+=30,mxUtils.write(d,mxResources.get("width")+":"),v=document.createElement("input"),
-v.setAttribute("type","text"),v.style.marginRight="16px",v.style.width="50px",v.style.marginLeft="6px",v.style.marginRight="16px",v.style.marginBottom="10px",v.value="100%",d.appendChild(v),mxUtils.write(d,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=e+"px",d.appendChild(y),mxUtils.br(d);var q=this.addLinkSection(d,k);c=null!=this.pages&&1<this.pages.length;var p=null;
-if(null==m||m.constructor!=window.DriveFile||b)p=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var u=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,u),I=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=I.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(u,"change",function(){u.checked?(C.removeAttribute("disabled"),I.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),I.setAttribute("disabled",
-"disabled"));I.checked&&u.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){f(q.getTarget(),q.getColor(),null==p?!0:p.checked,u.checked,K.getLink(),C.checked,null!=v?v.value:null,null!=y?y.value:null)}),null,mxResources.get("create"),g);this.showDialog(b.container,340,254+a,!0,!0);null!=v?(v.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?v.select():
-document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,e){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(g);var f=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=e?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),
+v.setAttribute("type","text"),v.style.marginRight="16px",v.style.width="50px",v.style.marginLeft="6px",v.style.marginRight="16px",v.style.marginBottom="10px",v.value="100%",d.appendChild(v),mxUtils.write(d,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=e+"px",d.appendChild(y),mxUtils.br(d);var p=this.addLinkSection(d,k);c=null!=this.pages&&1<this.pages.length;var q=null;
+if(null==m||m.constructor!=window.DriveFile||b)q=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var u=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,u),I=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=I.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(u,"change",function(){u.checked?(C.removeAttribute("disabled"),I.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),I.setAttribute("disabled",
+"disabled"));I.checked&&u.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){f(p.getTarget(),p.getColor(),null==q?!0:q.checked,u.checked,K.getLink(),C.checked,null!=v?v.value:null,null!=y?y.value:null)}),null,mxResources.get("create"),g);this.showDialog(b.container,340,254+a,!0,!0);null!=v?(v.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?v.select():
+document.execCommand("selectAll",!1,null)):p.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,e){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(g);var f=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=e?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),
 !0),g=this.editor.graph,m=e?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=m&&(m.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!f.checked,null!=n?n.checked:!1,null!=m?m.checked:!1)}),null,a,b);this.showDialog(a.container,300,e?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,e,f,k,l,n){l=null!=l?l:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=
 this.editor.graph,m="jpeg"==n?196:300,t=document.createElement("h3");mxUtils.write(t,a);t.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(t);mxUtils.write(d,mxResources.get("zoom")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.marginRight="16px";v.style.width="60px";v.style.marginLeft="4px";v.style.marginRight="12px";v.value=this.lastExportZoom||"100%";d.appendChild(v);mxUtils.write(d,mxResources.get("borderWidth")+":");
-var y=document.createElement("input");y.setAttribute("type","text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.value=this.lastExportBorder||"0";d.appendChild(y);mxUtils.br(d);var q=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=n),p=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),u=document.createElement("input");u.style.marginTop="16px";u.style.marginRight="8px";u.style.marginLeft="24px";u.setAttribute("disabled",
-"disabled");u.setAttribute("type","checkbox");k&&(d.appendChild(u),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),m+=26,mxEvent.addListener(p,"change",function(){p.checked?u.removeAttribute("disabled"):u.setAttribute("disabled","disabled")}));g.isSelectionEmpty()||(u.setAttribute("checked","checked"),u.defaultChecked=!0);var B=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type",
+var y=document.createElement("input");y.setAttribute("type","text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.value=this.lastExportBorder||"0";d.appendChild(y);mxUtils.br(d);var p=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=n),q=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),u=document.createElement("input");u.style.marginTop="16px";u.style.marginRight="8px";u.style.marginLeft="24px";u.setAttribute("disabled",
+"disabled");u.setAttribute("type","checkbox");k&&(d.appendChild(u),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),m+=26,mxEvent.addListener(q,"change",function(){q.checked?u.removeAttribute("disabled"):u.setAttribute("disabled","disabled")}));g.isSelectionEmpty()||(u.setAttribute("checked","checked"),u.defaultChecked=!0);var A=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type",
 "checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(d.appendChild(C),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),m+=26);var J=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),l,null,null,"jpeg"!=n),M=null!=this.pages&&1<this.pages.length,O=this.addCheckbox(d,M?mxResources.get("allPages"):"",M,!M,null,"jpeg"!=n);O.style.marginLeft="24px";O.style.marginBottom="16px";M||(O.style.display="none");mxEvent.addListener(J,"change",function(){J.checked&&
 M?O.removeAttribute("disabled"):O.setAttribute("disabled","disabled")});l&&M||O.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a);
-a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==n&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),m+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=y.value;this.lastExportZoom=v.value;f(v.value,q.checked,!p.checked,B.checked,J.checked,C.checked,y.value,u.checked,!O.checked,T.value)}),null,c,e);this.showDialog(c.container,340,
+a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==n&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),m+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=y.value;this.lastExportZoom=v.value;f(v.value,p.checked,!q.checked,A.checked,J.checked,C.checked,y.value,u.checked,!O.checked,T.value)}),null,c,e);this.showDialog(c.container,340,
 m,!0,!0);v.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?v.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=b){var n=document.createElement("h3");mxUtils.write(n,b);n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(n)}var m=this.addCheckbox(d,mxResources.get("fit"),
-!0),k=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&e,!e),t=this.addCheckbox(d,c),l=this.addCheckbox(d,mxResources.get("lightbox"),!0),v=this.addEditButton(d,l),q=v.getEditInput(),p=1<g.model.getChildCount(g.model.getRoot()),u=this.addCheckbox(d,mxResources.get("layers"),p,!p);u.style.marginLeft=q.style.marginLeft;u.style.marginBottom="12px";u.style.marginTop="8px";mxEvent.addListener(l,"change",function(){l.checked?(p&&u.removeAttribute("disabled"),q.removeAttribute("disabled")):
-(u.setAttribute("disabled","disabled"),q.setAttribute("disabled","disabled"));q.checked&&l.checked?v.getEditSelect().removeAttribute("disabled"):v.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(m.checked,k.checked,t.checked,l.checked,v.getLink(),u.checked)}),null,mxResources.get("embed"),f);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,f,k,l,n){function d(b){var d=" ",n="";e&&(d=" 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('"+
+!0),k=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&e,!e),t=this.addCheckbox(d,c),l=this.addCheckbox(d,mxResources.get("lightbox"),!0),v=this.addEditButton(d,l),p=v.getEditInput(),q=1<g.model.getChildCount(g.model.getRoot()),u=this.addCheckbox(d,mxResources.get("layers"),q,!q);u.style.marginLeft=p.style.marginLeft;u.style.marginBottom="12px";u.style.marginTop="8px";mxEvent.addListener(l,"change",function(){l.checked?(q&&u.removeAttribute("disabled"),p.removeAttribute("disabled")):
+(u.setAttribute("disabled","disabled"),p.setAttribute("disabled","disabled"));p.checked&&l.checked?v.getEditSelect().removeAttribute("disabled"):v.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(m.checked,k.checked,t.checked,l.checked,v.getLink(),u.checked)}),null,mxResources.get("embed"),f);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,f,k,l,n){function d(b){var d=" ",n="";e&&(d=" 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.drawHost+"/?client=1&lightbox=1"+(f?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",n+="cursor:pointer;");a&&(n+="max-width:100%;");var m="";c&&(m=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');l('<img src="'+b+'"'+m+(""!=n?' style="'+n+'"':"")+d+"/>")}var g=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=e?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null,
 mxUtils.bind(this,function(a){n({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),g.width*g.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var m="";c&&(m="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var t=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+m+"&xml="+encodeURIComponent(b));t.send(mxUtils.bind(this,function(){200<=t.getStatus()&&299>=t.getStatus()?d("data:image/png;base64,"+t.getText()):n({message:mxResources.get("unknownError")})}))}else n({message:mxResources.get("drawingTooLarge")})};
-EditorUi.prototype.createEmbedSvg=function(a,b,c,e,f,k,l){var d=this.editor.graph.getSvg(),g=d.getElementsByTagName("a");if(null!=g)for(var m=0;m<g.length;m++){var t=g[m].getAttribute("href");null!=t&&"#"==t.charAt(0)&&"_blank"==g[m].getAttribute("target")&&g[m].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var v=" ",y="";e&&(v="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.drawHost+"/?client=1&lightbox=1"+(f?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",y+="cursor:pointer;");a&&(y+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){l('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=y?' style="'+y+'"':"")+v+"/>")}))}else y="",e&&(d.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.drawHost+"/?client=1&lightbox=1"+(f?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),y+="cursor:pointer;"),a&&(a=parseInt(d.getAttribute("width")),b=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),y+="max-width:100%;max-height:"+b+"px;",d.removeAttribute("height")),""!=y&&d.setAttribute("style",y),l(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years");
+EditorUi.prototype.createEmbedSvg=function(a,b,c,e,f,k,l){var d=this.editor.graph.getSvg(),g=d.getElementsByTagName("a");if(null!=g)for(var m=0;m<g.length;m++){var t=g[m].getAttribute("href");null!=t&&"#"==t.charAt(0)&&"_blank"==g[m].getAttribute("target")&&g[m].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var v=" ",p="";e&&(v="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.drawHost+"/?client=1&lightbox=1"+(f?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");a&&(p+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){l('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=p?' style="'+p+'"':"")+v+"/>")}))}else p="",e&&(d.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.drawHost+"/?client=1&lightbox=1"+(f?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),p+="cursor:pointer;"),a&&(a=parseInt(d.getAttribute("width")),b=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),p+="max-width:100%;max-height:"+b+"px;",d.removeAttribute("height")),""!=p&&d.setAttribute("style",p),l(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years");
 b=Math.floor(a/2592E3);if(1<b)return b+" "+mxResources.get("months");b=Math.floor(a/86400);if(1<b)return b+" "+mxResources.get("days");b=Math.floor(a/3600);if(1<b)return b+" "+mxResources.get("hours");b=Math.floor(a/60);return 1<b?b+" "+mxResources.get("minutes"):1==b?b+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,e){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,
 function(){e()}))}),0)):e()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"==a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],g=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:g.apply(this,arguments)}}}null!=c&&(d=b.decompress(mxUtils.getTextContent(c)),null!=d&&0<d.length&&(a=mxUtils.parseXml(d).documentElement))}d=
 this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(y){}finally{this.editor.graph=d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,g=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),g=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()),
 e=d.getGlobalVariable,f=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(f.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==g&&(g=this.getFileData(!0));var e=c.toDataURL("image/png"),e=this.writeGraphModelToPng(e,"zTXt","mxGraphModel",atob(this.editor.graph.compress(g)));a(e.substring(e.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(z){null!=
 b&&b(z)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,e,f,k,l){l=b.background;l==mxConstants.NONE&&(l=null);k=b.getSvg(l,null,null,null,null,k);b.shadowVisible&&b.addSvgShadow(k);null!=a&&k.setAttribute("content",a);null!=c&&k.setAttribute("resource",c);if(null!=f)this.convertImages(k,mxUtils.bind(this,function(a){f((e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
 mxUtils.getXml(a))}));else return(e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(k)};EditorUi.prototype.exportImage=function(a,b,c,e,f,k,l,n,x){x=null!=x?x:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();
-try{this.saveCanvas(a,f?this.getFileData(!0,null,null,null,c,n):null,x)}catch(F){"Invalid image"==F.message?this.downloadFile(x):this.handleError(F)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,l)}catch(A){this.spinner.stop(),this.handleError(A)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"),
+try{this.saveCanvas(a,f?this.getFileData(!0,null,null,null,c,n):null,x)}catch(F){"Invalid image"==F.message?this.downloadFile(x):this.handleError(F)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,l)}catch(B){this.spinner.stop(),this.handleError(B)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"),
 "").replace(RegExp("[\\s\"']+$","g"),"")},c=this.editor.fontCss.split("url("),d=0,e={},f=mxUtils.bind(this,function(){if(0==d){for(var g=[c[0]],n=1;n<c.length;n++){var f=c[n].indexOf(")");g.push('url("');g.push(e[b(c[n].substring(0,f))]);g.push('"'+c[n].substring(f))}this.editor.resolvedFontCss=g.join("");a()}});if(0<c.length)for(var k=1;k<c.length;k++){var n=c[k].indexOf(")"),x=null,l=c[k].indexOf("format(",n);0<l&&(x=b(c[k].substring(l+7,c[k].indexOf(")",l))));mxUtils.bind(this,function(a){if(null==
 e[a]){e[a]=a;d++;var b="application/x-font-ttf";if("svg"==x||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==x||"embedded-opentype"==x||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==x||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==x||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==x||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==x||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c=
-a;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){e[a]=b;d--;f()}),mxUtils.bind(this,function(a){d--;f()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[k].substring(0,n)),x)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,f,k,l,n,x,q,p,u,E,G){k=null!=k?k:!0;u=null!=u?u:this.editor.graph;E=null!=E?E:0;var d=x?null:u.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==x&&
-(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(u.getSvg(d,null,null,G,null,null!=l?l:!0,null,null,null,q),mxUtils.bind(this,function(c){var g=new Image;g.onload=mxUtils.bind(this,function(){try{var e=document.createElement("canvas"),m=parseInt(c.getAttribute("width")),x=parseInt(c.getAttribute("height"));n=null!=n?n:1;null!=b&&(n=k?Math.min(1,Math.min(3*b/(4*x),b/m)):b/m);m=Math.ceil(n*m)+2*E;x=Math.ceil(n*x)+2*E;e.setAttribute("width",m);e.setAttribute("height",x);var l=e.getContext("2d");
-null!=d&&(l.beginPath(),l.rect(0,0,m,x),l.fillStyle=d,l.fill());l.scale(n,n);mxClient.IS_SF?window.setTimeout(function(){l.drawImage(g,E/n,E/n);a(e)},0):(l.drawImage(g,E/n,E/n),a(e))}catch(T){null!=f&&f(T)}});g.onerror=function(a){null!=f&&f(a)};try{q&&this.editor.graph.addSvgShadow(c);var e=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(u,
-c,!0,mxUtils.bind(this,function(){g.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(e)}catch(C){null!=f&&f(C)}}),c,p)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var g="http://"==d.substring(0,7)||"https://"==d.substring(0,8);g&&!navigator.onLine?d=c.svgBrokenImage.src:!g||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!=
+a;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){e[a]=b;d--;f()}),mxUtils.bind(this,function(a){d--;f()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[k].substring(0,n)),x)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,f,k,l,n,x,p,q,u,E,G){k=null!=k?k:!0;u=null!=u?u:this.editor.graph;E=null!=E?E:0;var d=x?null:u.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==x&&
+(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(u.getSvg(d,null,null,G,null,null!=l?l:!0,null,null,null,p),mxUtils.bind(this,function(c){var g=new Image;g.onload=mxUtils.bind(this,function(){try{var e=document.createElement("canvas"),m=parseInt(c.getAttribute("width")),x=parseInt(c.getAttribute("height"));n=null!=n?n:1;null!=b&&(n=k?Math.min(1,Math.min(3*b/(4*x),b/m)):b/m);m=Math.ceil(n*m)+2*E;x=Math.ceil(n*x)+2*E;e.setAttribute("width",m);e.setAttribute("height",x);var l=e.getContext("2d");
+null!=d&&(l.beginPath(),l.rect(0,0,m,x),l.fillStyle=d,l.fill());l.scale(n,n);mxClient.IS_SF?window.setTimeout(function(){l.drawImage(g,E/n,E/n);a(e)},0):(l.drawImage(g,E/n,E/n),a(e))}catch(T){null!=f&&f(T)}});g.onerror=function(a){null!=f&&f(a)};try{p&&this.editor.graph.addSvgShadow(c);var e=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(u,
+c,!0,mxUtils.bind(this,function(){g.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(e)}catch(C){null!=f&&f(C)}}),c,q)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var g="http://"==d.substring(0,7)||"https://"==d.substring(0,8);g&&!navigator.onLine?d=c.svgBrokenImage.src:!g||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!=
 d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,e){null==e&&(e=this.createImageUrlConverter());var d=0,g=c||{};c=mxUtils.bind(this,function(c,n){for(var f=a.getElementsByTagName(c),m=0;m<f.length;m++)mxUtils.bind(this,function(c){var f=e.convert(c.getAttribute(n));if(null!=f&&"data:"!=f.substring(0,5)){var m=g[f];null==m?(d++,this.convertImageToDataUri(f,function(e){null!=e&&(g[f]=e,c.setAttribute(n,
 e));d--;0==d&&b(a)})):c.setAttribute(n,m)}else null!=f&&c.setAttribute(n,f)})(f[m])});c("image","xlink:href");c("img","src");0==d&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,e,f,k){try{var d=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);f=null!=f?f:!0;var g=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var g=a.getText();if(d){if((9==document.documentMode||10==document.documentMode)&&
 "undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var g=Array(a.length),e=0;e<a.length;e++)g[e]=String.fromCharCode(a[e]);g=g.join("")}k=null!=k?k:"data:image/png;base64,";g=k+this.base64Encode(g)}b(g)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},d,this.timeout,function(){f&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:g})})});g()}catch(x){null!=c&&c(x)}};EditorUi.prototype.isCorsEnabledForUrl=
 function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};EditorUi.prototype.convertImageToDataUri=
-function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var c=new Image,d=this;this.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),g=a.getContext("2d");a.height=c.height;a.width=c.width;g.drawImage(c,0,0);try{b(a.toDataURL())}catch(B){b(d.svgBrokenImage.src)}};c.onerror=function(){b(d.svgBrokenImage.src)};c.src=a}};EditorUi.prototype.importXml=
+function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var c=new Image,d=this;this.crossOriginImages&&(c.crossOrigin="anonymous");c.onload=function(){var a=document.createElement("canvas"),g=a.getContext("2d");a.height=c.height;a.width=c.width;g.drawImage(c,0,0);try{b(a.toDataURL())}catch(A){b(d.svgBrokenImage.src)}};c.onerror=function(){b(d.svgBrokenImage.src)};c.src=a}};EditorUi.prototype.importXml=
 function(a,b,c,e,f){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var g=this.editor.graph;if(null!=a&&0<a.length){var n=mxUtils.parseXml(a),m=this.editor.extractGraphModel(n.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var k=m.getElementsByTagName("diagram");if(1==k.length)m=mxUtils.parseXml(g.decompress(mxUtils.getTextContent(k[0]))).documentElement;else if(1<k.length){g.model.beginUpdate();try{for(a=0;a<k.length;a++){k[a].removeAttribute("id");var l=this.updatePageRoot(new DiagramPage(k[a])),
 t=this.pages.length;null==l.getName()&&l.setName(mxResources.get("pageWithNumber",[t+1]));g.model.execute(new ChangePage(this,l,l,t))}}finally{g.model.endUpdate()}}}null!=m&&"mxGraphModel"===m.nodeName&&(d=g.importGraphModel(m,b,c,e))}}catch(E){if(f)throw E;this.handleError(E)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,e){e=null!=e?e:a.name;c=null!=c?c:mxUtils.bind(this,
 function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(e)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,e);var g=new XMLHttpRequest;g.open("POST",VSD_CONVERT_URL);g.responseType="blob";g.onreadystatechange=mxUtils.bind(this,function(){if(4==g.readyState)if(200<=g.status&&299>=g.status)try{g.response.name=e,this.doImportVisio(g.response,b,c)}catch(n){c(n)}else c({})});g.send(d)}else try{this.doImportVisio(a,
@@ -8097,46 +8106,46 @@ d))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(
 function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(t){c(t)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph,
 g=null;d.getModel().beginUpdate();try{g=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(g,!0)}finally{d.getModel().endUpdate()}return g};EditorUi.prototype.insertTextAt=function(a,b,c,e,f,k,l){k=null!=k?k:!0;l=null!=l?l:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this,
 function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(f||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var d=this.editor.graph;if("data:image/png;base64,"==a.substring(0,22)){var g=this.extractGraphModelFromPng(a),m=this.importXml(g,b,c,k,!0);if(0<m.length)return m}if("data:image/svg+xml;"==a.substring(0,19))try{if(g=null,"data:image/svg+xml;base64,"==a.substring(0,
-26)?(g=a.substring(a.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(a.substring(a.indexOf(",")+1)),m=this.importXml(g,b,c,k,!0),0<m.length)return m}catch(A){}this.loadImage(a,mxUtils.bind(this,function(g){if("data:"==a.substring(0,5))this.resizeImage(g,a,mxUtils.bind(this,function(a,g,e){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),g,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+26)?(g=a.substring(a.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(a.substring(a.indexOf(",")+1)),m=this.importXml(g,b,c,k,!0),0<m.length)return m}catch(B){}this.loadImage(a,mxUtils.bind(this,function(g){if("data:"==a.substring(0,5))this.resizeImage(g,a,mxUtils.bind(this,function(a,g,e){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),g,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
 this.convertDataUri(a)+";"))}),l,this.maxImageSize);else{var e=Math.min(1,Math.min(this.maxImageSize/g.width,this.maxImageSize/g.height)),n=Math.round(g.width*e);g=Math.round(g.height*e);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(b),d.snap(c),n,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(),
 null,a,d.snap(b),d.snap(c),1,1,"text;"+(e?"html=1;":"")),d.updateCellSize(g),d.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{d.getModel().endUpdate()}d.setSelectionCell(g)}))}else{a=this.editor.graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,k);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,k))}),mxUtils.bind(this,function(a){this.handleError(a)}));
 else{d=this.editor.graph;f=null;d.getModel().beginUpdate();try{f=d.insertVertex(d.getDefaultParent(),null,"",d.snap(b),d.snap(c),1,1,"text;"+(e?"html=1;":"")),d.fireEvent(new mxEventObject("textInserted","cells",[f])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),f.value=a,d.updateCellSize(f),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i.test(f.value)&&
 d.setLinkForCell(f,f.value),f.geometry.width+=d.gridSize,f.geometry.height+=d.gridSize}finally{d.getModel().endUpdate()}return[f]}}return[]};EditorUi.prototype.formatFileSize=function(a){var b=-1;do a/=1024,b++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1)))}return a};EditorUi.prototype.isRemoteFileFormat=
 function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&'{"state":"{\\"Properties\\":'==a.substring(0,26)};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport&&(!mxClient.IS_IE&&!mxClient.IS_IE11||0>navigator.appVersion.indexOf("Windows NT 6.1"))){var c=document.createElement("input");c.setAttribute("type","file");mxEvent.addListener(c,"change",mxUtils.bind(this,function(){null!=c.files&&
 this.importFiles(c.files,null,null,this.maxImageSize)}));c.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a,
-0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var g=this.dialog,e=g.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;e.apply(g,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,c,e,f,k,l,n,x,q,p){q=null!=q?q:!0;var d=!1,g=null,m=mxUtils.bind(this,
-function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,l)):b=this.importXml(a,c,e,q);null!=n&&n(b)});"image"==b.substring(0,5)?(x=!1,"image/png"==b.substring(0,9)&&(b=p?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(g=this.importXml(b,c,e,q),x=!0)),x||(g=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),q&&g.isGridEnabled()&&(c=g.snap(c),e=g.snap(e)),g=[g.insertVertex(null,null,"",c,e,f,k,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var g=this.dialog,e=g.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;e.apply(g,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importFile=function(a,b,c,e,f,k,l,n,x,p,q){p=null!=p?p:!0;var d=!1,g=null,m=mxUtils.bind(this,
+function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,l)):b=this.importXml(a,c,e,p);null!=n&&n(b)});"image"==b.substring(0,5)?(x=!1,"image/png"==b.substring(0,9)&&(b=q?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(g=this.importXml(b,c,e,p),x=!0)),x||(g=this.editor.graph,b=a.indexOf(";"),0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1))),p&&g.isGridEnabled()&&(c=g.snap(c),e=g.snap(e)),g=[g.insertVertex(null,null,"",c,e,f,k,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
 a+";")])):/(\.*<graphml )/.test(a)?(d=!0,this.importGraphML(a,m)):null!=x&&null!=l&&(/(\.v(dx|sdx?))($|\?)/i.test(l)||/(\.vs(x|sx?))($|\?)/i.test(l))?(d=!0,this.importVisio(x,m)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,l)?(d=!0,this.parseFile(null!=x?x:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?m(a.responseText):null!=n&&n(null))}),l)):/(\.v(sd|dx))($|\?)/i.test(l)||/(\.vs(s|x))($|\?)/i.test(l)||
-(g=this.insertTextAt(this.validateFileData(a),c,e,!0,null,q));d||null==n||n(g);return g};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,e,f,k;c<d;){e=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}f=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);
+(g=this.insertTextAt(this.validateFileData(a),c,e,!0,null,p));d||null==n||n(g);return g};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,e,f,k;c<d;){e=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}f=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);
 b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2);b+="=";break}k=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(f&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&15)<<2|(k&192)>>6);b+=
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,f,k,l,n,x,q,p,u){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;q=null!=q?q:this.maxImageBytes;var d=null!=b&&null!=c,g=!0,m=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var t=p||this.resampleThreshold,v=0;v<a.length;v++)if("image/"==a[v].type.substring(0,6)&&a[v].size>t){m=!0;break}var y=mxUtils.bind(this,function(){var m=this.editor.graph,x=m.gridSize;
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,f,k,l,n,x,p,q,u){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;p=null!=p?p:this.maxImageBytes;var d=null!=b&&null!=c,g=!0,m=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var t=q||this.resampleThreshold,v=0;v<a.length;v++)if("image/"==a[v].type.substring(0,6)&&a[v].size>t){m=!0;break}var y=mxUtils.bind(this,function(){var m=this.editor.graph,x=m.gridSize;
 f=null!=f?f:mxUtils.bind(this,function(a,b,c,g,e,n,f,k,m){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,f)),null):this.importFile(a,b,c,g,e,n,f,k,m,d,u)});k=null!=k?k:mxUtils.bind(this,function(a){m.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var t=a.length,v=t,y=[],z=mxUtils.bind(this,function(a,b){y[a]=b;if(0==--v){this.spinner.stop();if(null!=n)n(y);else{var c=[];m.getModel().beginUpdate();
-try{for(var d=0;d<y.length;d++){var g=y[d]();null!=g&&(c=c.concat(g))}}finally{m.getModel().endUpdate()}}k(c)}}),A=0;A<t;A++)mxUtils.bind(this,function(d){var n=a[d];if(null!=n){var k=new FileReader;k.onload=mxUtils.bind(this,function(a){if(null==l||l(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var k=a.target.result,t=k.indexOf(","),v=decodeURIComponent(escape(atob(k.substring(t+1)))),y=mxUtils.parseXml(v),v=y.getElementsByTagName("svg");if(0<v.length){var v=v[0],
-A=u?null:v.getAttribute("content");null!=A&&"<"!=A.charAt(0)&&"%"!=A.charAt(0)&&(A=unescape(window.atob?atob(A):Base64.decode(A,!0)));null!=A&&"%"==A.charAt(0)&&(A=decodeURIComponent(A));null==A||"<mxfile "!==A.substring(0,8)&&"<mxGraphModel "!==A.substring(0,14)?z(d,mxUtils.bind(this,function(){try{if(k.substring(0,t+1),null!=y){var a=y.getElementsByTagName("svg");if(0<a.length){var g=a[0],l=parseFloat(g.getAttribute("width")),q=parseFloat(g.getAttribute("height")),v=g.getAttribute("viewBox");if(null==
-v||0==v.length)g.setAttribute("viewBox","0 0 "+l+" "+q);else if(isNaN(l)||isNaN(q)){var p=v.split(" ");3<p.length&&(l=parseFloat(p[2]),q=parseFloat(p[3]))}k=this.createSvgDataUri(mxUtils.getXml(g));var u=Math.min(1,Math.min(e/Math.max(1,l)),e/Math.max(1,q)),z=f(k,n.type,b+d*x,c+d*x,Math.max(1,Math.round(l*u)),Math.max(1,Math.round(q*u)),n.name);if(isNaN(l)||isNaN(q)){var A=new Image;A.onload=mxUtils.bind(this,function(){l=Math.max(1,A.width);q=Math.max(1,A.height);z[0].geometry.width=l;z[0].geometry.height=
-q;g.setAttribute("viewBox","0 0 "+l+" "+q);k=this.createSvgDataUri(mxUtils.getXml(g));var a=k.indexOf(";");0<a&&(k=k.substring(0,a)+k.substring(k.indexOf(",",a+1)));m.setCellStyles("image",k,[z[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(g))}return z}}}catch(pa){}return null})):z(d,mxUtils.bind(this,function(){return f(A,"text/xml",b+d*x,c+d*x,0,0,n.name)}))}else z(d,mxUtils.bind(this,function(){return null}))}else{v=!1;if("image/png"==n.type){var B=u?null:this.extractGraphModelFromPng(a.target.result);
-if(null!=B&&0<B.length){var I=new Image;I.src=a.target.result;z(d,mxUtils.bind(this,function(){return f(B,"text/xml",b+d*x,c+d*x,I.width,I.height,n.name)}));v=!0}}v||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
-a.target.result,mxUtils.bind(this,function(k,m,l){z(d,mxUtils.bind(this,function(){if(null!=k&&k.length<q){var t=g&&this.isResampleImage(a.target.result,p)?Math.min(1,Math.min(e/m,e/l)):1;return f(k,n.type,b+d*x,c+d*x,Math.round(m*t),Math.round(l*t),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,e,p)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else f(a.target.result,n.type,b+d*x,c+d*x,240,160,n.name,
-function(a){z(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?f(null,n.type,b+d*x,c+d*x,240,160,n.name,function(a){z(d,function(){return a})},n):"image"==n.type.substring(0,5)?k.readAsDataURL(n):k.readAsText(n)}})(A)});m?this.confirmImageResize(function(a){g=a;y()},x):y()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?
+try{for(var d=0;d<y.length;d++){var g=y[d]();null!=g&&(c=c.concat(g))}}finally{m.getModel().endUpdate()}}k(c)}}),B=0;B<t;B++)mxUtils.bind(this,function(d){var n=a[d];if(null!=n){var k=new FileReader;k.onload=mxUtils.bind(this,function(a){if(null==l||l(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var k=a.target.result,t=k.indexOf(","),v=decodeURIComponent(escape(atob(k.substring(t+1)))),y=mxUtils.parseXml(v),v=y.getElementsByTagName("svg");if(0<v.length){var v=v[0],
+B=u?null:v.getAttribute("content");null!=B&&"<"!=B.charAt(0)&&"%"!=B.charAt(0)&&(B=unescape(window.atob?atob(B):Base64.decode(B,!0)));null!=B&&"%"==B.charAt(0)&&(B=decodeURIComponent(B));null==B||"<mxfile "!==B.substring(0,8)&&"<mxGraphModel "!==B.substring(0,14)?z(d,mxUtils.bind(this,function(){try{if(k.substring(0,t+1),null!=y){var a=y.getElementsByTagName("svg");if(0<a.length){var g=a[0],l=parseFloat(g.getAttribute("width")),p=parseFloat(g.getAttribute("height")),v=g.getAttribute("viewBox");if(null==
+v||0==v.length)g.setAttribute("viewBox","0 0 "+l+" "+p);else if(isNaN(l)||isNaN(p)){var q=v.split(" ");3<q.length&&(l=parseFloat(q[2]),p=parseFloat(q[3]))}k=this.createSvgDataUri(mxUtils.getXml(g));var u=Math.min(1,Math.min(e/Math.max(1,l)),e/Math.max(1,p)),z=f(k,n.type,b+d*x,c+d*x,Math.max(1,Math.round(l*u)),Math.max(1,Math.round(p*u)),n.name);if(isNaN(l)||isNaN(p)){var B=new Image;B.onload=mxUtils.bind(this,function(){l=Math.max(1,B.width);p=Math.max(1,B.height);z[0].geometry.width=l;z[0].geometry.height=
+p;g.setAttribute("viewBox","0 0 "+l+" "+p);k=this.createSvgDataUri(mxUtils.getXml(g));var a=k.indexOf(";");0<a&&(k=k.substring(0,a)+k.substring(k.indexOf(",",a+1)));m.setCellStyles("image",k,[z[0]])});B.src=this.createSvgDataUri(mxUtils.getXml(g))}return z}}}catch(pa){}return null})):z(d,mxUtils.bind(this,function(){return f(B,"text/xml",b+d*x,c+d*x,0,0,n.name)}))}else z(d,mxUtils.bind(this,function(){return null}))}else{v=!1;if("image/png"==n.type){var A=u?null:this.extractGraphModelFromPng(a.target.result);
+if(null!=A&&0<A.length){var I=new Image;I.src=a.target.result;z(d,mxUtils.bind(this,function(){return f(A,"text/xml",b+d*x,c+d*x,I.width,I.height,n.name)}));v=!0}}v||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
+a.target.result,mxUtils.bind(this,function(k,m,l){z(d,mxUtils.bind(this,function(){if(null!=k&&k.length<p){var t=g&&this.isResampleImage(a.target.result,q)?Math.min(1,Math.min(e/m,e/l)):1;return f(k,n.type,b+d*x,c+d*x,Math.round(m*t),Math.round(l*t),n.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),g,e,q)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else f(a.target.result,n.type,b+d*x,c+d*x,240,160,n.name,
+function(a){z(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(n.name)||/(\.vs(x|sx?))($|\?)/i.test(n.name)?f(null,n.type,b+d*x,c+d*x,240,160,n.name,function(a){z(d,function(){return a})},n):"image"==n.type.substring(0,5)?k.readAsDataURL(n):k.readAsText(n)}})(B)});m?this.confirmImageResize(function(a){g=a;y()},x):y()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?
 mxSettings.getResizeImages():null,g=function(d,g){if(d||b)mxSettings.setResizeImages(d?g:null),mxSettings.save();c();a(g)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){g(a,!0)},function(a){g(a,!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):g(!1,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var g=new XMLHttpRequest;g.open("POST",OPEN_URL);g.onreadystatechange=function(){b(g)};g.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,e,f,k){f=null!=f?f:this.maxImageSize;var d=Math.max(1,a.width),g=Math.max(1,a.height);
-if(e&&this.isResampleImage(b,k))try{var m=Math.max(d/f,g/f);if(1<m){var l=Math.round(d/m),t=Math.round(g/m),q=document.createElement("canvas");q.width=l;q.height=t;q.getContext("2d").drawImage(a,0,0,l,t);var v=q.toDataURL();if(v.length<b.length){var p=document.createElement("canvas");p.width=l;p.height=t;var y=p.toDataURL();v!==y&&(b=v,d=l,g=t)}}}catch(D){}c(b,d,g)};EditorUi.prototype.crcTable=[];for(var e=0;256>e;e++)for(var k=e,f=0;8>f;f++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[e]=
+if(e&&this.isResampleImage(b,k))try{var m=Math.max(d/f,g/f);if(1<m){var l=Math.round(d/m),t=Math.round(g/m),p=document.createElement("canvas");p.width=l;p.height=t;p.getContext("2d").drawImage(a,0,0,l,t);var v=p.toDataURL();if(v.length<b.length){var q=document.createElement("canvas");q.width=l;q.height=t;var y=q.toDataURL();v!==y&&(b=v,d=l,g=t)}}}catch(D){}c(b,d,g)};EditorUi.prototype.crcTable=[];for(var e=0;256>e;e++)for(var k=e,f=0;8>f;f++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[e]=
 k;EditorUi.prototype.updateCRC=function(a,b,c,e){for(var d=0;d<e;d++)a=EditorUi.prototype.crcTable[(a^b[c+d])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,e,f){function d(a,b){var c=k;k+=b;return a.substring(c,k)}function g(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<
 16)+(a.charCodeAt(0)<<24)}function n(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=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);f=a.substring(0,k);do{var m=g(a);if("IDAT"==d(a,4)){f=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+e;e=4294967295;e=this.updateCRC(e,
-b,0,4);e=this.updateCRC(e,c,0,c.length);f+=n(c.length)+b+c+n(e^4294967295);f+=a.substring(k-8,a.length);break}f+=a.substring(k-8,k-4+m);d(a,m);d(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),d=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(d,mxUtils.bind(this,function(a,c,e){a=d.substring(a+8,a+8+e);"zTXt"==c?(e=a.indexOf(String.fromCharCode(0)),
-"mxGraphModel"==a.substring(0,e)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(e+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(t){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror=
+b,0,4);e=this.updateCRC(e,c,0,c.length);f+=n(c.length)+b+c+n(e^4294967295);f+=a.substring(k-8,a.length);break}f+=a.substring(k-8,k-4+m);d(a,m);d(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),d=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(d,mxUtils.bind(this,function(a,c,g){a=d.substring(a+8,a+8+g);"zTXt"==c?(g=a.indexOf(String.fromCharCode(0)),
+"mxGraphModel"==a.substring(0,g)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(g+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(t){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror=
 c);d.src=a};var l=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(C){a.handleError(C)}return c};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this,
 arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var e=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return e.apply(this,arguments)};
 var f=b.addClickHandler;b.addClickHandler=function(a,c,d){var e=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=e&&e(a,c)};f.call(this,a,c,d)};l.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,
-360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var k=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:k.apply(this,arguments)};var q=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var e=c.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))q.apply(this,
-arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var n=this.actions.get("print");n.setEnabled(!mxClient.IS_IOS||!navigator.standalone);n.visible=n.isEnabled();if(!this.editor.chromeless||this.editor.editable){var x=function(){window.setTimeout(function(){p.innerHTML="&nbsp;";
-p.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");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);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE||
+360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var k=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:k.apply(this,arguments)};var p=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var e=c.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))p.apply(this,
+arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var n=this.actions.get("print");n.setEnabled(!mxClient.IS_IOS||!navigator.standalone);n.visible=n.isEnabled();if(!this.editor.chromeless||this.editor.editable){var x=function(){window.setTimeout(function(){q.innerHTML="&nbsp;";
+q.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");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);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE||
 b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var c=a.clipboardData||a.originalEvent.clipboardData,d=!1,e=0;e<c.types.length;e++)if("text/"===c.types[e].substring(0,5)){d=!0;break}if(!d){var g=c.items;for(index in g){var n=g[index];if("file"===n.kind){if(b.isEditing())this.importFiles([n.getAsFile()],0,0,this.maxImageSize,function(a,c,d,e,g,n){b.insertImage(a,g,n)},function(){},function(a){return"image/"==a.type.substring(0,
-6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var f=this.editor.graph.getInsertPoint();this.importFiles([n.getAsFile()],f.x,f.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(V){}}),!1);var p=document.createElement("div");p.style.position="absolute";p.style.whiteSpace="nowrap";p.style.overflow="hidden";p.style.display="block";p.contentEditable=!0;mxUtils.setOpacity(p,0);p.style.width="1px";p.style.height="1px";p.innerHTML="&nbsp;";var u=!1;this.keyHandler.bindControlKey(88,null);
-this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(p.style.left=b.container.scrollLeft+10+"px",p.style.top=b.container.scrollTop+10+"px",b.container.appendChild(p),
-u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){p.focus();document.execCommand("selectAll",!1,null)},0):(p.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=c&&17!=c&&91!=c||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),p.parentNode.removeChild(p),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(p,
-"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(p),x())}));mxEvent.addListener(p,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(p,!0),x())}));mxEvent.addListener(p,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(p.innerHTML="&nbsp;",p.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,p);p.innerHTML="&nbsp;"}),0))}),!0);var F=this.isSelectionAllowed;this.isSelectionAllowed=
-function(a){return mxEvent.getSource(a)==p?!0:F.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}),
+6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var f=this.editor.graph.getInsertPoint();this.importFiles([n.getAsFile()],f.x,f.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(V){}}),!1);var q=document.createElement("div");q.style.position="absolute";q.style.whiteSpace="nowrap";q.style.overflow="hidden";q.style.display="block";q.contentEditable=!0;mxUtils.setOpacity(q,0);q.style.width="1px";q.style.height="1px";q.innerHTML="&nbsp;";var u=!1;this.keyHandler.bindControlKey(88,null);
+this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(q.style.left=b.container.scrollLeft+10+"px",q.style.top=b.container.scrollTop+10+"px",b.container.appendChild(q),
+u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){q.focus();document.execCommand("selectAll",!1,null)},0):(q.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=c&&17!=c&&91!=c||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),q.parentNode.removeChild(q),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(q,
+"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(q),x())}));mxEvent.addListener(q,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(q,!0),x())}));mxEvent.addListener(q,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(q.innerHTML="&nbsp;",q.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,q);q.innerHTML="&nbsp;"}),0))}),!0);var F=this.isSelectionAllowed;this.isSelectionAllowed=
+function(a){return mxEvent.getSource(a)==q?!0:F.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}),
 mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,e,g,n){b.insertImage(a,g,n)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=
 0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,a));b.insertImage(decodeURIComponent(c),d*e,a*e)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<=
 mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){n=document.createElement("div");n.style.position="absolute";n.style.top="95px";n.style.left="250px";n.style.width="2000px";n.style.height="30px";n.style.background=
@@ -8164,7 +8173,7 @@ this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(ne
 null,!0)}a.stopPropagation();a.preventDefault()}))};EditorUi.prototype.highlightElement=function(a){var b=0,c=0,d,e;if(null==a){e=document.body;var f=document.documentElement;d=(e.clientWidth||f.clientWidth)-3;e=Math.max(e.clientHeight||0,f.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,e=a.clientHeight;f=document.createElement("div");f.style.zIndex=mxPopupMenu.prototype.zIndex+2;f.style.border="3px dotted rgb(254, 137, 12)";f.style.pointerEvents="none";f.style.position="absolute";
 f.style.top=b+"px";f.style.left=c+"px";f.style.width=Math.max(0,d-3)+"px";f.style.height=Math.max(0,e-3)+"px";null!=a&&a.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(f):document.body.appendChild(f);return f};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b,
 c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,e=a.name;if(null!=e&&0<e.length){!this.useCanvasForExport&&/(\.png)$/i.test(e)&&(e=e.substring(0,e.length-4)+".xml");var g=mxUtils.bind(this,function(a){e=0<=e.lastIndexOf(".")?e.substring(0,e.lastIndexOf("."))+".xml":e+".xml";if("<mxlibrary"==
-a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(A){this.handleError(A,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();g(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop();
+a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(B){this.handleError(B,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();g(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop();
 g(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,e))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?g(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(e)&&(e=e.substring(0,e.length-5)+".xml"),this.convertLucidChart(d,
 mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(z){this.handleError(z,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0,
 9)&&(d=this.extractGraphModelFromPng(d)),this.spinner.stop(),this.openLocalFile(d,e,b)}}catch(z){this.handleError(z)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?c.readAsDataURL(a):c.readAsText(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&&
@@ -8182,14 +8191,14 @@ mxResources.get(f.okKey):null,function(a){null!=a&&k.postMessage(JSON.stringify(
 mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"discard",message:f}),"*")}),f.editKey?mxResources.get(f.editKey):null,f.discardKey?mxResources.get(f.discardKey):null,f.ignore?mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"ignore",message:f}),"*")}):null);this.showDialog(n.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{n.init()}catch(M){k.postMessage(JSON.stringify({event:"draft",
 error:M.toString(),message:f}),"*")}return}if("template"==f.action){this.spinner.stop();n=1==f.enableRecent;l=1==f.enableSearch;n=new NewDialog(this,!1,null!=f.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=f.callback?k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,g,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,n?mxUtils.bind(this,function(a){this.recentReadyCallback=
 a;k.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,l?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;k.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,c){k.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")});this.showDialog(n.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));n.init();return}if("searchDocsList"==f.action)this.searchReadyCallback(f.list,f.errorMsg);else if("recentDocsList"==
-f.action)this.recentReadyCallback(f.list,f.errorMsg);else{if("textContent"==f.action){this.editor.graph.setEnabled(!1);var m=this.editor.graph,n="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var q=m;this.currentPage!=this.pages[l]&&(q=this.createTemporaryGraph(m.getStylesheet()),q.model.setRoot(this.pages[l].root));n+=this.pages[l].getName()+" "+q.getIndexableText()+" "}else n=m.getIndexableText();this.editor.graph.setEnabled(!0);k.postMessage(JSON.stringify({event:"textContent",data:n,
-message:f}),"*");return}if("status"==f.action){null!=f.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(f.messageKey))):null!=f.message&&this.editor.setStatus(mxUtils.htmlEntities(f.message));null!=f.modified&&(this.editor.modified=f.modified);return}if("spinner"==f.action){var p=null!=f.messageKey?mxResources.get(f.messageKey):f.message;null==f.show||f.show?this.spinner.spin(document.body,p):this.spinner.stop();return}if("export"==f.action){if("png"==f.format||"xmlpng"==f.format){if(null==
+f.action)this.recentReadyCallback(f.list,f.errorMsg);else{if("textContent"==f.action){this.editor.graph.setEnabled(!1);var m=this.editor.graph,n="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var p=m;this.currentPage!=this.pages[l]&&(p=this.createTemporaryGraph(m.getStylesheet()),p.model.setRoot(this.pages[l].root));n+=this.pages[l].getName()+" "+p.getIndexableText()+" "}else n=m.getIndexableText();this.editor.graph.setEnabled(!0);k.postMessage(JSON.stringify({event:"textContent",data:n,
+message:f}),"*");return}if("status"==f.action){null!=f.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(f.messageKey))):null!=f.message&&this.editor.setStatus(mxUtils.htmlEntities(f.message));null!=f.modified&&(this.editor.modified=f.modified);return}if("spinner"==f.action){var q=null!=f.messageKey?mxResources.get(f.messageKey):f.message;null==f.show||f.show?this.spinner.spin(document.body,q):this.spinner.stop();return}if("export"==f.action){if("png"==f.format||"xmlpng"==f.format){if(null==
 f.spin&&null==f.spinKey||this.spinner.spin(document.body,null!=f.spinKey?mxResources.get(f.spinKey):f.spin)){var t=null!=f.xml?f.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var m=this.editor.graph,u=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=f.format;b.message=f;b.data=a;b.xml=encodeURIComponent(t);k.postMessage(JSON.stringify(b),"*")}),v=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);
-"xmlpng"==f.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(t))));m!=this.editor.graph&&m.container.parentNode.removeChild(m.container);u(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var m=this.createTemporaryGraph(m.getStylesheet()),y=m.getGlobalVariable,B=this.pages[0];m.getGlobalVariable=function(a){return"page"==a?B.getName():"pagenumber"==a?1:y.apply(this,arguments)};document.body.appendChild(m.container);
-m.model.setRoot(B.root)}this.exportToCanvas(mxUtils.bind(this,function(a){v(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){v(null)}),null,null,null,null,null,null,m)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==f.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(t)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?u("data:image/png;base64,"+a.getText()):v(null)}),mxUtils.bind(this,function(){v(null)}))}}else{null!=
-f.xml&&0<f.xml.length&&this.setFileData(f.xml);p=this.createLoadMessage("export");if("html2"==f.format||"html"==f.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))n=this.getXmlFileData(),p.xml=mxUtils.getXml(n),p.data=this.getFileData(null,null,!0,null,null,null,n),p.format=f.format;else if("html"==f.format)t=this.editor.getGraphXml(),p.data=this.getHtml(t,this.editor.graph),p.xml=mxUtils.getXml(t),p.format=f.format;else{mxSvgCanvas2D.prototype.foAltText=null;n=this.editor.graph.background;
-n==mxConstants.NONE&&(n=null);p.xml=this.getFileData(!0);p.format="svg";if(f.embedImages||null==f.embedImages){if(null==f.spin&&null==f.spinKey||this.spinner.spin(document.body,null!=f.spinKey?mxResources.get(f.spinKey):f.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==f.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);k.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(n),
-mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));k.postMessage(JSON.stringify(p),"*")}));return}n="xmlsvg"==f.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(n));p.data=this.createSvgDataUri(n)}k.postMessage(JSON.stringify(p),"*")}return}if("load"==f.action)d=1==f.autosave,this.hideDialog(),null!=f.modified&&null==urlParams.modified&&(urlParams.modified=
+"xmlpng"==f.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(t))));m!=this.editor.graph&&m.container.parentNode.removeChild(m.container);u(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var m=this.createTemporaryGraph(m.getStylesheet()),y=m.getGlobalVariable,A=this.pages[0];m.getGlobalVariable=function(a){return"page"==a?A.getName():"pagenumber"==a?1:y.apply(this,arguments)};document.body.appendChild(m.container);
+m.model.setRoot(A.root)}this.exportToCanvas(mxUtils.bind(this,function(a){v(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){v(null)}),null,null,null,null,null,null,m)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==f.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(t)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?u("data:image/png;base64,"+a.getText()):v(null)}),mxUtils.bind(this,function(){v(null)}))}}else{null!=
+f.xml&&0<f.xml.length&&this.setFileData(f.xml);q=this.createLoadMessage("export");if("html2"==f.format||"html"==f.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))n=this.getXmlFileData(),q.xml=mxUtils.getXml(n),q.data=this.getFileData(null,null,!0,null,null,null,n),q.format=f.format;else if("html"==f.format)t=this.editor.getGraphXml(),q.data=this.getHtml(t,this.editor.graph),q.xml=mxUtils.getXml(t),q.format=f.format;else{mxSvgCanvas2D.prototype.foAltText=null;n=this.editor.graph.background;
+n==mxConstants.NONE&&(n=null);q.xml=this.getFileData(!0);q.format="svg";if(f.embedImages||null==f.embedImages){if(null==f.spin&&null==f.spinKey||this.spinner.spin(document.body,null!=f.spinKey?mxResources.get(f.spinKey):f.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==f.format?this.getEmbeddedSvg(q.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(a);k.postMessage(JSON.stringify(q),"*")})):this.convertImages(this.editor.graph.getSvg(n),
+mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(mxUtils.getXml(a));k.postMessage(JSON.stringify(q),"*")}));return}n="xmlsvg"==f.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(n));q.data=this.createSvgDataUri(n)}k.postMessage(JSON.stringify(q),"*")}return}if("load"==f.action)d=1==f.autosave,this.hideDialog(),null!=f.modified&&null==urlParams.modified&&(urlParams.modified=
 f.modified),null!=f.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=f.saveAndExit),null!=f.title&&null!=this.buttonContainer&&(l=document.createElement("span"),mxUtils.write(l,f.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),
 this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),f=null!=f.xmlpng?this.extractGraphModelFromPng(f.xmlpng):f.xml;else{k.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(f)}),"*");return}}}var J=mxUtils.bind(this,function(g,f){c=!0;try{a(g,f)}catch(U){this.handleError(U)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var n=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())});
 e=n();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=n();if(d!=e&&!c){var g=this.createLoadMessage("autosave");g.xml=d;d=JSON.stringify(g);(window.opener||window.parent).postMessage(d,"*")}e=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged",
@@ -8199,59 +8208,59 @@ mxUtils.bind(this,function(a){J(a)}),mxUtils.bind(this,function(a){this.handleEr
 "2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="geBigButton";b.style.fontSize="12px";b.style.padding="4px 6px 4px 6px";b.style.borderRadius="3px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",
 mxResources.get("saveAndExit")),b.style.fontSize="12px",b.style.marginLeft="6px",b.style.padding="4px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.style.fontSize="12px";b.style.marginLeft="6px";b.style.marginRight="20px";b.style.padding="4px";b.style.cursor="pointer";mxEvent.addListener(b,
 "click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import")));this.showDialog(this.importCsvDialog.container,
-640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[];if(0<c.length){var e={},g=null,f=null,n=null,k=null,l="",q="auto",p="auto",u=null,G=null,H=40,D=40,K=100,I=0,C=this.editor.graph;C.getGraphBounds();for(var J=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},M=C.getFreeInsertPoint(),O=M.x,T=M.y,M=T,U=null,V="auto",k=null,W=[],aa=null,ea=null,N=0;N<c.length&&"#"==c[N].charAt(0);){a=c[N];for(N++;N<
-c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[N].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[N].substring(1)),N++;if("#"!=a.charAt(1)){var ba=a.indexOf(":");if(0<ba){var P=mxUtils.trim(a.substring(1,ba)),Q=mxUtils.trim(a.substring(ba+1));"label"==P?U=C.sanitizeHtml(Q):"style"==P?g=Q:"parentstyle"==P?f=Q:"identity"==P&&0<Q.length&&"-"!=Q?n=Q:"parent"==P&&0<Q.length&&"-"!=Q?k=Q:"namespace"==P&&0<Q.length&&"-"!=Q?l=Q:"width"==P?q=Q:"height"==P?p=Q:"left"==P&&0<Q.length?u=Q:"top"==P&&0<Q.length?
+640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[];if(0<c.length){var e={},g=null,f=null,n=null,k=null,l="",p="auto",q="auto",u=null,G=null,H=40,D=40,K=100,I=0,C=this.editor.graph;C.getGraphBounds();for(var J=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},M=C.getFreeInsertPoint(),O=M.x,T=M.y,M=T,U=null,V="auto",k=null,W=[],aa=null,ea=null,N=0;N<c.length&&"#"==c[N].charAt(0);){a=c[N];for(N++;N<
+c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[N].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[N].substring(1)),N++;if("#"!=a.charAt(1)){var ba=a.indexOf(":");if(0<ba){var P=mxUtils.trim(a.substring(1,ba)),Q=mxUtils.trim(a.substring(ba+1));"label"==P?U=C.sanitizeHtml(Q):"style"==P?g=Q:"parentstyle"==P?f=Q:"identity"==P&&0<Q.length&&"-"!=Q?n=Q:"parent"==P&&0<Q.length&&"-"!=Q?k=Q:"namespace"==P&&0<Q.length&&"-"!=Q?l=Q:"width"==P?p=Q:"height"==P?q=Q:"left"==P&&0<Q.length?u=Q:"top"==P&&0<Q.length?
 G=Q:"ignore"==P?ea=Q.split(","):"connect"==P?W.push(JSON.parse(Q)):"link"==P?aa=Q:"padding"==P?I=parseFloat(Q):"edgespacing"==P?H=parseFloat(Q):"nodespacing"==P?D=parseFloat(Q):"levelspacing"==P?K=parseFloat(Q):"layout"==P&&(V=Q)}}}var X=this.editor.csvToArray(c[N]),P=ba=null;if(null!=n||null!=k)for(var R=0;R<X.length;R++)n==X[R]&&(ba=R),k==X[R]&&(P=R);null==U&&(U="%"+X[0]+"%");if(null!=W)for(var S=0;S<W.length;S++)null==e[W[S].to]&&(e[W[S].to]={});C.model.beginUpdate();try{for(R=N+1;R<c.length;R++){var Z=
 this.editor.csvToArray(c[R]);if(null==Z){var ca=40<c[R].length?c[R].substring(0,40)+"...":c[R];throw Error(R+" ("+ca+") "+mxResources.get("containsValidationErrors"));}if(Z.length==X.length){var L=null,fa=null!=ba?l+Z[ba]:null;null!=fa&&(L=C.model.getCell(fa));null==L&&(L=new mxCell(U,new mxGeometry(O,M,0,0),g||"whiteSpace=wrap;html=1;"),L.vertex=!0,L.id=fa);for(var Y=0;Y<Z.length;Y++)C.setAttributeForCell(L,X[Y],Z[Y]);C.setAttributeForCell(L,"placeholders","1");L.style=C.replacePlaceholders(L,L.style);
-for(S=0;S<W.length;S++)e[W[S].to][L.getAttribute(W[S].to)]=L;null!=aa&&"link"!=aa&&(C.setLinkForCell(L,L.getAttribute(aa)),C.setAttributeForCell(L,aa,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[L]));var oa=this.editor.graph.getPreferredSizeForCell(L);L.vertex&&(null!=u&&null!=L.getAttribute(u)&&(L.geometry.x=O+parseFloat(L.getAttribute(u))),null!=G&&null!=L.getAttribute(G)&&(L.geometry.y=T+parseFloat(L.getAttribute(G))),"@"==q.charAt(0)&&null!=L.getAttribute(q.substring(1))?L.geometry.width=
-parseFloat(L.getAttribute(q.substring(1))):L.geometry.width="auto"==q?oa.width+I:parseFloat(q),"@"==p.charAt(0)&&null!=L.getAttribute(p.substring(1))?L.geometry.height=parseFloat(L.getAttribute(p.substring(1))):L.geometry.height="auto"==p?oa.height+I:parseFloat(p),M+=L.geometry.height+D);k=null!=P?C.model.getCell(l+Z[P]):null;null!=k?(k.style=C.replacePlaceholders(k,f),C.addCell(L,k)):d.push(C.addCell(L))}}for(var ha=d.slice(),ga=d.slice(),S=0;S<W.length;S++)for(var da=W[S],R=0;R<d.length;R++){var L=
+for(S=0;S<W.length;S++)e[W[S].to][L.getAttribute(W[S].to)]=L;null!=aa&&"link"!=aa&&(C.setLinkForCell(L,L.getAttribute(aa)),C.setAttributeForCell(L,aa,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[L]));var oa=this.editor.graph.getPreferredSizeForCell(L);L.vertex&&(null!=u&&null!=L.getAttribute(u)&&(L.geometry.x=O+parseFloat(L.getAttribute(u))),null!=G&&null!=L.getAttribute(G)&&(L.geometry.y=T+parseFloat(L.getAttribute(G))),"@"==p.charAt(0)&&null!=L.getAttribute(p.substring(1))?L.geometry.width=
+parseFloat(L.getAttribute(p.substring(1))):L.geometry.width="auto"==p?oa.width+I:parseFloat(p),"@"==q.charAt(0)&&null!=L.getAttribute(q.substring(1))?L.geometry.height=parseFloat(L.getAttribute(q.substring(1))):L.geometry.height="auto"==q?oa.height+I:parseFloat(q),M+=L.geometry.height+D);k=null!=P?C.model.getCell(l+Z[P]):null;null!=k?(k.style=C.replacePlaceholders(k,f),C.addCell(L,k)):d.push(C.addCell(L))}}for(var ha=d.slice(),ga=d.slice(),S=0;S<W.length;S++)for(var da=W[S],R=0;R<d.length;R++){var L=
 d[R],qa=L.getAttribute(da.from);if(null!=qa){C.setAttributeForCell(L,da.from,null);for(var pa=qa.split(","),Y=0;Y<pa.length;Y++){var ia=e[da.to][pa[Y]];null!=ia&&(U=da.label,null!=da.fromlabel&&(U=(L.getAttribute(da.fromlabel)||"")+(U||"")),null!=da.tolabel&&(U=(U||"")+(ia.getAttribute(da.tolabel)||"")),ga.push(C.insertEdge(null,null,U||"",da.invert?ia:L,da.invert?L:ia,da.style||C.createCurrentEdgeStyle())),mxUtils.remove(da.invert?L:ia,ha))}}}if(null!=ea)for(R=0;R<d.length;R++)for(L=d[R],Y=0;Y<ea.length;Y++)C.setAttributeForCell(L,
-mxUtils.trim(ea[Y]),null);var la=new mxParallelEdgeLayout(C);la.spacing=H;var ra=function(){la.execute(C.getDefaultParent());for(var a=0;a<d.length;a++){var b=C.getCellGeometry(d[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==q&&(b.width=Math.round(C.snap(b.width)));"auto"==p&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==V){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var sa=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return sa.apply(this,arguments)||0>mxUtils.indexOf(d,
+mxUtils.trim(ea[Y]),null);var la=new mxParallelEdgeLayout(C);la.spacing=H;var ra=function(){la.execute(C.getDefaultParent());for(var a=0;a<d.length;a++){var b=C.getCellGeometry(d[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==p&&(b.width=Math.round(C.snap(b.width)));"auto"==q&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==V){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var sa=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return sa.apply(this,arguments)||0>mxUtils.indexOf(d,
 a)};this.executeLayout(function(){ma.execute(C.getDefaultParent());ra()},!0,J);J=null}else if("horizontaltree"==V||"verticaltree"==V||"auto"==V&&ga.length==2*d.length-1&&1==ha.length){C.view.validate();var na=new mxCompactTreeLayout(C,"horizontaltree"==V);na.levelDistance=D;na.edgeRouting=!1;na.resetEdges=!1;this.executeLayout(function(){na.execute(C.getDefaultParent(),0<ha.length?ha[0]:null)},!0,J);J=null}else if("horizontalflow"==V||"verticalflow"==V||"auto"==V&&1==ha.length){C.view.validate();
 var ja=new mxHierarchicalLayout(C,"horizontalflow"==V?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ja.intraCellSpacing=D;ja.parallelEdgeSpacing=H;ja.interRankCellSpacing=K;ja.disableEdgeStyle=!1;this.executeLayout(function(){ja.execute(C.getDefaultParent(),ga);C.moveCells(ga,O,T)},!0,J);J=null}else if("organic"==V||"auto"==V&&ga.length>d.length){C.view.validate();var ka=new mxFastOrganicLayout(C);ka.forceConstant=3*D;ka.resetEdges=!1;var ua=ka.isVertexIgnored;ka.isVertexIgnored=function(a){return ua.apply(this,
 arguments)||0>mxUtils.indexOf(d,a)};la=new mxParallelEdgeLayout(C);la.spacing=H;this.executeLayout(function(){ka.execute(C.getDefaultParent());ra()},!0,J);J=null}this.hideDialog()}finally{C.model.endUpdate()}null!=J&&J()}}catch(ta){this.handleError(ta)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=
 window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,c){a=new LinkDialog(this,a,b,c,
-!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var q=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=q.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-
+!0);this.showDialog(a.container,480,130,!0,!0);a.init()};var p=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=p.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-
 2*a.y/b))}return d.apply(this,arguments)};var e=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return e.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var d=
 this.source.getPagePadding();return new mxPoint(Math.round(Math.max(0,(b.outline.container.clientWidth/a-(this.source.minimumGraphSize.width-2*d.x))/2)-d.x),Math.round(Math.max(0,(b.outline.container.clientHeight/a-(this.source.minimumGraphSize.height-2*d.y))/2)-d.y-5/a))}return new mxPoint(8/a,8/a)};var f=b.init;b.init=function(){f.apply(this,arguments);b.outline.view.getBackgroundPageBounds=function(){var a=c.getPageLayout(),b=c.getPageSize();return new mxRectangle(this.scale*(this.translate.x+
-a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),e=b.source,f=b.outline;f.pageScale=e.pageScale;f.pageFormat=e.pageFormat;f.background=e.background;f.pageVisible=e.pageVisible;f.background=e.background;var g=mxUtils.getCurrentStyle(e.container);f.container.style.backgroundColor=g.backgroundColor;null!=e.view.backgroundPageShape&&
-null!=f.view.backgroundPageShape&&(f.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=0;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b||null==this.trello&&"function"!==typeof window.TrelloClient||
+a.x*b.width),this.scale*(this.translate.y+a.y*b.height),this.scale*a.width*b.width,this.scale*a.height*b.height)};b.outline.view.validateBackgroundPage()};this.editor.addListener("pageSelected",function(a,c){var d=c.getProperty("change"),e=b.source,g=b.outline;g.pageScale=e.pageScale;g.pageFormat=e.pageFormat;g.background=e.background;g.pageVisible=e.pageVisible;g.background=e.background;var f=mxUtils.getCurrentStyle(e.container);g.container.style.backgroundColor=f.backgroundColor;null!=e.view.backgroundPageShape&&
+null!=g.view.backgroundPageShape&&(g.view.backgroundPageShape.fill=e.view.backgroundPageShape.fill);b.outline.view.clear(d.previousPage.root,!0);b.outline.view.validate()});return b};EditorUi.prototype.getServiceCount=function(a,b){var c=0;null==this.drive&&"function"!==typeof window.DriveClient||c++;b||null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;b||null==this.gitHub||c++;b||null==this.trello&&"function"!==typeof window.TrelloClient||
 c++;c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var a=this.getCurrentFile(),b=null!=a||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(b);this.menus.get("viewZoom").setEnabled(b);var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c);this.menus.get("exportAs").setEnabled(!c);
 this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b);
 this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));if(this.isAppCache()){var e=applicationCache;if(null!=e&&null==
 this.offlineStatus){this.offlineStatus=document.createElement("div");this.offlineStatus.className="geItem";this.offlineStatus.style.position="absolute";this.offlineStatus.style.fontSize="8pt";this.offlineStatus.style.top="2px";this.offlineStatus.style.right="12px";this.offlineStatus.style.color="#666";this.offlineStatus.style.margin="4px";this.offlineStatus.style.padding="2px";this.offlineStatus.style.verticalAlign="middle";this.offlineStatus.innerHTML="";this.menubarContainer.appendChild(this.offlineStatus);
 mxEvent.addListener(this.offlineStatus,"click",mxUtils.bind(this,function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var e=window.applicationCache,f=null,b=mxUtils.bind(this,function(){var a=e.status,b;a==e.CHECKING&&(a=e.DOWNLOADING);switch(a){case e.UNCACHED:b="";break;case e.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case e.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+
 IMAGE_PATH+'/spin.gif"/>';break;case e.UPDATEREADY:b='<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case e.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=f&&(this.offlineStatus.innerHTML=b,f=a)});mxEvent.addListener(e,"checking",b);mxEvent.addListener(e,"noupdate",b);mxEvent.addListener(e,"downloading",
-b);mxEvent.addListener(e,"progress",b);mxEvent.addListener(e,"cached",b);mxEvent.addListener(e,"updateready",b);mxEvent.addListener(e,"obsolete",b);mxEvent.addListener(e,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var p=EditorUi.prototype.updateActionStates;
-EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b);
+b);mxEvent.addListener(e,"progress",b);mxEvent.addListener(e,"cached",b);mxEvent.addListener(e,"updateready",b);mxEvent.addListener(e,"obsolete",b);mxEvent.addListener(e,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var q=EditorUi.prototype.updateActionStates;
+EditorUi.prototype.updateActionStates=function(){q.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionPoints").setEnabled(b);
 this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==c||!c.isRestricted()));
 this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").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!=c&&c.isRenamable()||"1"==urlParams.embed);
 this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var u=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),
 this.exportDialog=null);u.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,e,f,k){var d=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(d.getSvg(e,f,k)),"image/svg+xml");else{var g=a.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*f/d.view.scale),
-q=Math.floor(l.height*f/d.view.scale);g.length<=MAX_REQUEST_SIZE&&m*q<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+q+"&border="+k+"&xml="+encodeURIComponent(g))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&&
+p=Math.floor(l.height*f/d.view.scale);g.length<=MAX_REQUEST_SIZE&&m*p<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+p+"&border="+k+"&xml="+encodeURIComponent(g))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&&
 c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var e=this.getFutureCellForEdit(c.model,a,d.source.id);e!=d.source&&(d.source=e)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var e=b.changes.length-1;0<=e;e--){var f=b.changes[e];if(f.constructor==mxChildChange&&null!=f.child&&f.child.id==c){a.contains(f.previous)&&
 (d=f.child);break}}return d}})();EditorUi.DIFF_INSERT="i";EditorUi.DIFF_REMOVE="r";EditorUi.DIFF_UPDATE="u";EditorUi.prototype.codec=new mxCodec;EditorUi.prototype.viewStateProperties={background:!0,backgroundImage:!0,shadowVisible:!0,foldingEnabled:!0,pageScale:!0,mathEnabled:!0,pageFormat:!0};EditorUi.prototype.cellProperties={id:!0,value:!0,xmlValue:!0,vertex:!0,edge:!0,visible:!0,collapsed:!0,connectable:!0,parent:!0,children:!0,previous:!0,source:!0,target:!0,edges:!0,geometry:!0,style:!0,mxObjectId:!0,mxTransient:!0};
-EditorUi.prototype.patchPages=function(b,c,a,e,k){var f={},l=[],q={},p={},u={},d={};if(null!=e&&null!=e[EditorUi.DIFF_UPDATE])for(var g in e[EditorUi.DIFF_UPDATE])f[g]=e[EditorUi.DIFF_UPDATE][g];if(null!=c[EditorUi.DIFF_REMOVE])for(e=0;e<c[EditorUi.DIFF_REMOVE].length;e++)p[c[EditorUi.DIFF_REMOVE][e]]=!0;if(null!=c[EditorUi.DIFF_INSERT])for(e=0;e<c[EditorUi.DIFF_INSERT].length;e++)q[c[EditorUi.DIFF_INSERT][e].previous]=c[EditorUi.DIFF_INSERT][e];if(null!=c[EditorUi.DIFF_UPDATE])for(g in c[EditorUi.DIFF_UPDATE])e=
-c[EditorUi.DIFF_UPDATE][g],null!=e.previous&&(d[e.previous]=g);if(null!=b){var m="";for(e=0;e<b.length;e++){var v=b[e].getId();u[v]=b[e];null!=d[m]||p[v]||null!=c[EditorUi.DIFF_UPDATE]&&null!=c[EditorUi.DIFF_UPDATE][v]&&null!=c[EditorUi.DIFF_UPDATE][v].previous||(d[m]=v);m=v}}var t={},y=mxUtils.bind(this,function(b){var e=null!=b?b.getId():"";if(null!=b&&!t[e]){t[e]=!0;l.push(b);var g=null!=c[EditorUi.DIFF_UPDATE]?c[EditorUi.DIFF_UPDATE][e]:null;null!=g&&(this.updatePageRoot(b),null!=g.name&&b.setName(g.name),
-null!=g.view&&this.patchViewState(b,g.view),null!=g.cells&&this.patchPage(b,g.cells,f[b.getId()],k),!a||null==g.cells&&null==g.view||(b.needsUpdate=!0))}b=d[e];null!=b&&(delete d[e],y(u[b]));b=q[e];null!=b&&(delete q[e],B(b))}),B=mxUtils.bind(this,function(b){b=mxUtils.parseXml(b.data).documentElement;b=new DiagramPage(b);this.updatePageRoot(b);var c=u[b.getId()];null==c?y(b):(c.root=b.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):a&&(c.needsUpdate=!0))});y();for(g in d)y(u[d[g]]),
-delete d[g];for(g in q)B(q[g]),delete q[g];return l};EditorUi.prototype.patchViewState=function(b,c){if(null!=b.viewState&&null!=c){b==this.currentPage&&(b.viewState=this.editor.graph.getViewState());for(var a in c)b.viewState[a]=JSON.parse(c[a]);b==this.currentPage&&this.editor.graph.setViewState(b.viewState)}};
-EditorUi.prototype.createParentLookup=function(b,c){function a(a){var b=e[a];null==b&&(b={inserted:[],moved:{}},e[a]=b);return b}var e={};if(null!=c[EditorUi.DIFF_INSERT])for(var k=0;k<c[EditorUi.DIFF_INSERT].length;k++){var f=c[EditorUi.DIFF_INSERT][k],l=null!=f.parent?f.parent:"",q=null!=f.previous?f.previous:"";a(l).inserted[q]=f}if(null!=c[EditorUi.DIFF_UPDATE])for(var p in c[EditorUi.DIFF_UPDATE])f=c[EditorUi.DIFF_UPDATE][p],null!=f.previous&&(l=f.parent,null==l&&(k=b.getCell(p),null!=k&&(k=
-b.getParent(k),null!=k&&(l=k.getId()))),null!=l&&(a(l).moved[f.previous]=p));return e};
-EditorUi.prototype.patchPage=function(b,c,a,e){var k=b==this.currentPage?this.editor.graph.model:new mxGraphModel(b.root),f=this.createParentLookup(k,c);k.beginUpdate();try{var l=k.updateEdgeParent,q=new mxDictionary,p=[];k.updateEdgeParent=function(a,b){!q.get(a)&&e&&(q.put(a,!0),p.push(a))};var u=f[""],d=null!=u&&null!=u.inserted?u.inserted[""]:null,g=null;null!=d&&(g=this.getCellForJson(d));if(null==g){var m=null!=u&&null!=u.moved?u.moved[""]:null;null!=m&&(g=k.getCell(m))}null!=g&&(k.setRoot(g),
+EditorUi.prototype.patchPages=function(b,c,a,e,k){var f={},l=[],p={},q={},u={},d={};if(null!=e&&null!=e[EditorUi.DIFF_UPDATE])for(var g in e[EditorUi.DIFF_UPDATE])f[g]=e[EditorUi.DIFF_UPDATE][g];if(null!=c[EditorUi.DIFF_REMOVE])for(e=0;e<c[EditorUi.DIFF_REMOVE].length;e++)q[c[EditorUi.DIFF_REMOVE][e]]=!0;if(null!=c[EditorUi.DIFF_INSERT])for(e=0;e<c[EditorUi.DIFF_INSERT].length;e++)p[c[EditorUi.DIFF_INSERT][e].previous]=c[EditorUi.DIFF_INSERT][e];if(null!=c[EditorUi.DIFF_UPDATE])for(g in c[EditorUi.DIFF_UPDATE])e=
+c[EditorUi.DIFF_UPDATE][g],null!=e.previous&&(d[e.previous]=g);if(null!=b){var m="";for(e=0;e<b.length;e++){var v=b[e].getId();u[v]=b[e];null!=d[m]||q[v]||null!=c[EditorUi.DIFF_UPDATE]&&null!=c[EditorUi.DIFF_UPDATE][v]&&null!=c[EditorUi.DIFF_UPDATE][v].previous||(d[m]=v);m=v}}var t={},y=mxUtils.bind(this,function(b){var e=null!=b?b.getId():"";if(null!=b&&!t[e]){t[e]=!0;l.push(b);var g=null!=c[EditorUi.DIFF_UPDATE]?c[EditorUi.DIFF_UPDATE][e]:null;null!=g&&(this.updatePageRoot(b),null!=g.name&&b.setName(g.name),
+null!=g.view&&this.patchViewState(b,g.view),null!=g.cells&&this.patchPage(b,g.cells,f[b.getId()],k),!a||null==g.cells&&null==g.view||(b.needsUpdate=!0))}b=d[e];null!=b&&(delete d[e],y(u[b]));b=p[e];null!=b&&(delete p[e],A(b))}),A=mxUtils.bind(this,function(b){b=mxUtils.parseXml(b.data).documentElement;b=new DiagramPage(b);this.updatePageRoot(b);var c=u[b.getId()];null==c?y(b):(c.root=b.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):a&&(c.needsUpdate=!0))});y();for(g in d)y(u[d[g]]),
+delete d[g];for(g in p)A(p[g]),delete p[g];return l};EditorUi.prototype.patchViewState=function(b,c){if(null!=b.viewState&&null!=c){b==this.currentPage&&(b.viewState=this.editor.graph.getViewState());for(var a in c)b.viewState[a]=JSON.parse(c[a]);b==this.currentPage&&this.editor.graph.setViewState(b.viewState)}};
+EditorUi.prototype.createParentLookup=function(b,c){function a(a){var b=e[a];null==b&&(b={inserted:[],moved:{}},e[a]=b);return b}var e={};if(null!=c[EditorUi.DIFF_INSERT])for(var k=0;k<c[EditorUi.DIFF_INSERT].length;k++){var f=c[EditorUi.DIFF_INSERT][k],l=null!=f.parent?f.parent:"",p=null!=f.previous?f.previous:"";a(l).inserted[p]=f}if(null!=c[EditorUi.DIFF_UPDATE])for(var q in c[EditorUi.DIFF_UPDATE])f=c[EditorUi.DIFF_UPDATE][q],null!=f.previous&&(l=f.parent,null==l&&(k=b.getCell(q),null!=k&&(k=
+b.getParent(k),null!=k&&(l=k.getId()))),null!=l&&(a(l).moved[f.previous]=q));return e};
+EditorUi.prototype.patchPage=function(b,c,a,e){var k=b==this.currentPage?this.editor.graph.model:new mxGraphModel(b.root),f=this.createParentLookup(k,c);k.beginUpdate();try{var l=k.updateEdgeParent,p=new mxDictionary,q=[];k.updateEdgeParent=function(a,b){!p.get(a)&&e&&(p.put(a,!0),q.push(a))};var u=f[""],d=null!=u&&null!=u.inserted?u.inserted[""]:null,g=null;null!=d&&(g=this.getCellForJson(d));if(null==g){var m=null!=u&&null!=u.moved?u.moved[""]:null;null!=m&&(g=k.getCell(m))}null!=g&&(k.setRoot(g),
 b.root=g);this.patchCellRecursive(b,k,k.root,f,c);if(null!=c[EditorUi.DIFF_REMOVE])for(var v=0;v<c[EditorUi.DIFF_REMOVE].length;v++){var t=k.getCell(c[EditorUi.DIFF_REMOVE][v]);null!=t&&k.remove(t)}if(null!=c[EditorUi.DIFF_UPDATE]){var y=null!=a&&null!=a.cells?a.cells[EditorUi.DIFF_UPDATE]:null;for(m in c[EditorUi.DIFF_UPDATE])this.patchCell(k,k.getCell(m),c[EditorUi.DIFF_UPDATE][m],null!=y?y[m]:null)}if(null!=c[EditorUi.DIFF_INSERT])for(v=0;v<c[EditorUi.DIFF_INSERT].length;v++)d=c[EditorUi.DIFF_INSERT][v],
-t=k.getCell(d.id),null!=t&&(k.setTerminal(t,k.getCell(d.source),!0),k.setTerminal(t,k.getCell(d.target),!1));k.updateEdgeParent=l;if(e&&0<p.length)for(v=0;v<p.length;v++)k.contains(p[v])&&k.updateEdgeParent(p[v])}finally{k.endUpdate()}};
-EditorUi.prototype.patchCellRecursive=function(b,c,a,e,k){if(null!=a){for(var f=e[a.getId()],l=null!=f&&null!=f.inserted?f.inserted:{},f=null!=f&&null!=f.moved?f.moved:{},q=0,p=c.getChildCount(a),u="",d=0;d<p;d++){var g=c.getChildAt(a,d).getId();null==f[u]&&(null==k[EditorUi.DIFF_UPDATE]||null==k[EditorUi.DIFF_UPDATE][g]||null==k[EditorUi.DIFF_UPDATE][g].previous&&null==k[EditorUi.DIFF_UPDATE][g].parent)&&(f[u]=g);u=g}p=mxUtils.bind(this,function(d,f){var g=null!=d?d.getId():"";if(null!=d&&f){var l=
-c.getCell(g);null!=l&&l!=d&&(d=null)}null!=d&&(c.getChildAt(a,q)!=d&&c.add(a,d,q),this.patchCellRecursive(b,c,d,e,k),q++);return g});for(u=[null];0<u.length;)if(d=u.shift(),d=p(null!=d?d.child:null,null!=d?d.insert:!1),g=f[d],null!=g&&(delete f[d],u.push({child:c.getCell(g)})),g=l[d],null!=g&&(delete l[d],u.push({child:this.getCellForJson(g),insert:!0})),0==u.length){for(d in f)u.push({child:c.getCell(f[d])}),delete f[d];for(d in l)u.push({child:this.getCellForJson(l[d]),insert:!0}),delete l[d]}}};
+t=k.getCell(d.id),null!=t&&(k.setTerminal(t,k.getCell(d.source),!0),k.setTerminal(t,k.getCell(d.target),!1));k.updateEdgeParent=l;if(e&&0<q.length)for(v=0;v<q.length;v++)k.contains(q[v])&&k.updateEdgeParent(q[v])}finally{k.endUpdate()}};
+EditorUi.prototype.patchCellRecursive=function(b,c,a,e,k){if(null!=a){for(var f=e[a.getId()],l=null!=f&&null!=f.inserted?f.inserted:{},f=null!=f&&null!=f.moved?f.moved:{},p=0,q=c.getChildCount(a),u="",d=0;d<q;d++){var g=c.getChildAt(a,d).getId();null==f[u]&&(null==k[EditorUi.DIFF_UPDATE]||null==k[EditorUi.DIFF_UPDATE][g]||null==k[EditorUi.DIFF_UPDATE][g].previous&&null==k[EditorUi.DIFF_UPDATE][g].parent)&&(f[u]=g);u=g}q=mxUtils.bind(this,function(d,f){var g=null!=d?d.getId():"";if(null!=d&&f){var l=
+c.getCell(g);null!=l&&l!=d&&(d=null)}null!=d&&(c.getChildAt(a,p)!=d&&c.add(a,d,p),this.patchCellRecursive(b,c,d,e,k),p++);return g});for(u=[null];0<u.length;)if(d=u.shift(),d=q(null!=d?d.child:null,null!=d?d.insert:!1),g=f[d],null!=g&&(delete f[d],u.push({child:c.getCell(g)})),g=l[d],null!=g&&(delete l[d],u.push({child:this.getCellForJson(g),insert:!0})),0==u.length){for(d in f)u.push({child:c.getCell(f[d])}),delete f[d];for(d in l)u.push({child:this.getCellForJson(l[d]),insert:!0}),delete l[d]}}};
 EditorUi.prototype.patchCell=function(b,c,a,e){if(null!=c&&null!=a){if(null==e||null==e.xmlValue&&(null==e.value||""==e.value))"value"in a?b.setValue(c,a.value):null!=a.xmlValue&&b.setValue(c,mxUtils.parseXml(a.xmlValue).documentElement);null!=e&&null!=e.style||null==a.style||b.setStyle(c,a.style);null!=a.visible&&b.setVisible(c,1==a.visible);null!=a.collapsed&&b.setCollapsed(c,1==a.collapsed);null!=a.vertex&&(c.vertex=1==a.vertex);null!=a.edge&&(c.edge=1==a.edge);null!=a.connectable&&(c.connectable=
 1==a.connectable);null!=a.geometry&&b.setGeometry(c,this.codec.decode(mxUtils.parseXml(a.geometry).documentElement));null!=a.source&&b.setTerminal(c,b.getCell(a.source),!0);null!=a.target&&b.setTerminal(c,b.getCell(a.target),!1);for(var k in a)this.cellProperties[k]||(c[k]=a[k])}};
 EditorUi.prototype.getPagesForNode=function(b,c){var a=this.editor.extractGraphModel(b,!0);null!=a&&(b=a);var e=b.getElementsByTagName(c||"diagram"),a=[];if(0<e.length)for(var k=0;k<e.length;k++){var f=new DiagramPage(e[k]);this.updatePageRoot(f);a.push(f)}else"mxGraphModel"==b.nodeName&&(e=this.editor.graph,f=new DiagramPage(b.ownerDocument.createElement("diagram")),f.setName(mxResources.get("pageWithNumber",[1])),mxUtils.setTextContent(f.node,e.compress(e.zapGremlins(mxUtils.getXml(b)))),a.push(f));
 return a};
-EditorUi.prototype.diffPages=function(b,c){for(var a=[],e=[],k={},f={},l={},q=null,p=0;p<c.length;p++)f[c[p].getId()]={page:c[p],prev:q},q=c[p];q=null;for(p=0;p<b.length;p++){var u=b[p].getId(),d=f[u];if(null==d)e.push(u);else{var g=this.diffPage(b[p],d.page),m={};0<Object.keys(g).length&&(m.cells=g);g=this.diffViewState(b[p],d.page);0<Object.keys(g).length&&(m.view=g);if((null!=d.prev?null==q:null!=q)||null!=q&&null!=d.prev&&q.getId()!=d.prev.getId())m.previous=null!=d.prev?d.prev.getId():"";null!=
-d.page.getName()&&b[p].getName()!=d.page.getName()&&(m.name=d.page.getName());0<Object.keys(m).length&&(l[u]=m)}delete f[b[p].getId()];q=b[p]}for(u in f)d=f[u],a.push({data:mxUtils.getXml(d.page.node),previous:null!=d.prev?d.prev.getId():""});0<Object.keys(l).length&&(k[EditorUi.DIFF_UPDATE]=l);0<e.length&&(k[EditorUi.DIFF_REMOVE]=e);0<a.length&&(k[EditorUi.DIFF_INSERT]=a);return k};
+EditorUi.prototype.diffPages=function(b,c){for(var a=[],e=[],k={},f={},l={},p=null,q=0;q<c.length;q++)f[c[q].getId()]={page:c[q],prev:p},p=c[q];p=null;for(q=0;q<b.length;q++){var u=b[q].getId(),d=f[u];if(null==d)e.push(u);else{var g=this.diffPage(b[q],d.page),m={};0<Object.keys(g).length&&(m.cells=g);g=this.diffViewState(b[q],d.page);0<Object.keys(g).length&&(m.view=g);if((null!=d.prev?null==p:null!=p)||null!=p&&null!=d.prev&&p.getId()!=d.prev.getId())m.previous=null!=d.prev?d.prev.getId():"";null!=
+d.page.getName()&&b[q].getName()!=d.page.getName()&&(m.name=d.page.getName());0<Object.keys(m).length&&(l[u]=m)}delete f[b[q].getId()];p=b[q]}for(u in f)d=f[u],a.push({data:mxUtils.getXml(d.page.node),previous:null!=d.prev?d.prev.getId():""});0<Object.keys(l).length&&(k[EditorUi.DIFF_UPDATE]=l);0<e.length&&(k[EditorUi.DIFF_REMOVE]=e);0<a.length&&(k[EditorUi.DIFF_INSERT]=a);return k};
 EditorUi.prototype.createCellLookup=function(b,c,a){a=null!=a?a:{};a[b.getId()]={cell:b,prev:c};var e=b.getChildCount();c=null;for(var k=0;k<e;k++){var f=b.getChildAt(k);this.createCellLookup(f,c,a);c=f}return a};
-EditorUi.prototype.diffCellRecursive=function(b,c,a,e,k){e=null!=e?e:{};var f=a[b.getId()];delete a[b.getId()];if(null==f)k.push(b.getId());else{var l=this.diffCell(b,f.cell);if(null!=l.parent||(null!=f.prev?null==c:null!=c)||null!=c&&null!=f.prev&&c.getId()!=f.prev.getId())l.previous=null!=f.prev?f.prev.getId():"";0<Object.keys(l).length&&(e[b.getId()]=l)}f=b.getChildCount();c=null;for(l=0;l<f;l++){var q=b.getChildAt(l);this.diffCellRecursive(q,c,a,e,k);c=q}return e};
-EditorUi.prototype.diffPage=function(b,c){var a=[],e=[],k={};this.updatePageRoot(b);this.updatePageRoot(c);var f=this.createCellLookup(c.root),l=this.diffCellRecursive(b.root,null,f,l,e),q;for(q in f){var p=f[q];a.push(this.getJsonForCell(p.cell,p.prev))}0<Object.keys(l).length&&(k[EditorUi.DIFF_UPDATE]=l);0<e.length&&(k[EditorUi.DIFF_REMOVE]=e);0<a.length&&(k[EditorUi.DIFF_INSERT]=a);return k};
-EditorUi.prototype.diffViewState=function(b,c){var a=b.viewState,e=c.viewState,k={};c==this.currentPage&&(e=this.editor.graph.getViewState());if(null!=a&&null!=e)for(var f in this.viewStateProperties){var l=JSON.stringify(a[f]),q=JSON.stringify(e[f]);l!=q&&(k[f]=q)}return k};
+EditorUi.prototype.diffCellRecursive=function(b,c,a,e,k){e=null!=e?e:{};var f=a[b.getId()];delete a[b.getId()];if(null==f)k.push(b.getId());else{var l=this.diffCell(b,f.cell);if(null!=l.parent||(null!=f.prev?null==c:null!=c)||null!=c&&null!=f.prev&&c.getId()!=f.prev.getId())l.previous=null!=f.prev?f.prev.getId():"";0<Object.keys(l).length&&(e[b.getId()]=l)}f=b.getChildCount();c=null;for(l=0;l<f;l++){var p=b.getChildAt(l);this.diffCellRecursive(p,c,a,e,k);c=p}return e};
+EditorUi.prototype.diffPage=function(b,c){var a=[],e=[],k={};this.updatePageRoot(b);this.updatePageRoot(c);var f=this.createCellLookup(c.root),l=this.diffCellRecursive(b.root,null,f,l,e),p;for(p in f){var q=f[p];a.push(this.getJsonForCell(q.cell,q.prev))}0<Object.keys(l).length&&(k[EditorUi.DIFF_UPDATE]=l);0<e.length&&(k[EditorUi.DIFF_REMOVE]=e);0<a.length&&(k[EditorUi.DIFF_INSERT]=a);return k};
+EditorUi.prototype.diffViewState=function(b,c){var a=b.viewState,e=c.viewState,k={};c==this.currentPage&&(e=this.editor.graph.getViewState());if(null!=a&&null!=e)for(var f in this.viewStateProperties){var l=JSON.stringify(a[f]),p=JSON.stringify(e[f]);l!=p&&(k[f]=p)}return k};
 EditorUi.prototype.getCellForJson=function(b){var c=null!=b.geometry?this.codec.decode(mxUtils.parseXml(b.geometry).documentElement):null,a=b.value;null!=b.xmlValue&&(a=mxUtils.parseXml(b.xmlValue).documentElement);c=new mxCell(a,c,b.style);c.connectable=0!=b.connectable;c.collapsed=1==b.collapsed;c.visible=0!=b.visible;c.vertex=1==b.vertex;c.edge=1==b.edge;c.id=b.id;for(var e in b)this.cellProperties[e]||(c[e]=b[e]);return c};
 EditorUi.prototype.getJsonForCell=function(b,c){var a={id:b.getId()};b.vertex&&(a.vertex=1);b.edge&&(a.edge=1);b.connectable||(a.connectable=0);null!=b.parent&&(a.parent=b.parent.getId());null!=c&&(a.previous=c.getId());null!=b.source&&(a.source=b.source.getId());null!=b.target&&(a.target=b.target.getId());null!=b.style&&(a.style=b.style);null!=b.geometry&&(a.geometry=mxUtils.getXml(this.codec.encode(b.geometry)));b.collapsed&&(a.collapsed=1);b.visible||(a.visible=0);null!=b.value&&("object"===typeof b.value&&
 "number"===typeof b.value.nodeType&&"string"===typeof b.value.nodeName&&"function"===typeof b.value.getAttribute?a.xmlValue=mxUtils.getXml(b.value):a.value=b.value);for(var e in b)this.cellProperties[e]||"function"===typeof b[e]||(a[e]=b[e]);return a};
@@ -8289,25 +8298,25 @@ DrawioFileSync.prototype.isValidState=function(){return this.ui.getCurrentFile()
 DrawioFileSync.prototype.fileChangedNotify=function(){if(this.isValidState())if(this.file.savingFile)this.remoteFileChanged=!0;else var b=this.fileChanged(mxUtils.bind(this,function(b){this.updateStatus()}),mxUtils.bind(this,function(b){this.file.handleFileError(b)}),mxUtils.bind(this,function(){return!this.file.savingFile&&this.notifyThread!=b}))};
 DrawioFileSync.prototype.fileChanged=function(b,c,a){var e=window.setTimeout(mxUtils.bind(this,function(){null!=a&&a()||(this.isValidState()?this.file.loadPatchDescriptor(mxUtils.bind(this,function(e){null!=a&&a()||(this.isValidState()?this.catchup(this.file.getDescriptorEtag(e),this.file.getDescriptorSecret(e),b,c,a):null!=c&&c())}),c):null!=c&&c())}),0);return this.notifyThread=e};
 DrawioFileSync.prototype.reloadDescriptor=function(){this.file.loadDescriptor(mxUtils.bind(this,function(b){null!=b?(this.file.setDescriptorEtag(b,this.file.getCurrentEtag()),this.updateDescriptor(b),this.fileChangedNotify()):(this.file.inConflictState=!0,this.file.handleFileError())}),mxUtils.bind(this,function(b){this.file.inConflictState=!0;this.file.handleFileError(b)}))};DrawioFileSync.prototype.updateDescriptor=function(b){this.file.setDescriptor(b);this.file.descriptorChanged();this.start()};
-DrawioFileSync.prototype.catchup=function(b,c,a,e,k){if(null==k||!k()){var f=this.file.getCurrentEtag();if(f==b)null!=a&&a();else if(this.isValidState()){var l=0,q=!1,p=mxUtils.bind(this,function(){if(null==k||!k())if(f!=this.file.getCurrentEtag())null!=a&&a();else if(this.isValidState()){var u=!0,d=window.setTimeout(mxUtils.bind(this,function(){u=!1;this.reload(a,e,k)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(f)+"&to="+
-encodeURIComponent(b)+(null!=c?"&secret="+encodeURIComponent(c):""),mxUtils.bind(this,function(c){this.file.stats.bytesReceived+=c.getText().length;window.clearTimeout(d);if(u&&(null==k||!k()))if(f!=this.file.getCurrentEtag())null!=a&&a();else if(this.isValidState()){var g=null,v=[];if(200<=c.getStatus()&&299>=c.getStatus()&&0<c.getText().length)try{var t=JSON.parse(c.getText());if(null!=t&&0<t.length)for(var y=0;y<t.length;y++){var B=this.stringToObject(t[y]);if(B.v>DrawioFileSync.PROTOCOL){q=!0;
-v=[];break}else if(B.v===DrawioFileSync.PROTOCOL&&null!=B.d)g=B.d.checksum,v.push(B.d.patch);else{q=!0;v=[];break}}}catch(n){v=[],null!=window.console&&"1"==urlParams.test&&console.log(n)}try{0<v.length?(this.file.stats.cacheHits++,this.merge(v,g,b,a,e,k)):l<=this.maxCacheReadyRetries&&!q&&401!=c.getStatus()?(l++,this.file.stats.cacheMiss++,window.setTimeout(p,(l+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(a,e,k))}catch(n){null!=e&&e(n)}}else null!=e&&e()}))}else null!=e&&e()});
-window.setTimeout(p,this.cacheReadyDelay)}else null!=e&&e()}};DrawioFileSync.prototype.reload=function(b,c,a,e){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=b&&b()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),a,e)};
+DrawioFileSync.prototype.catchup=function(b,c,a,e,k){if(null==k||!k()){var f=this.file.getCurrentEtag();if(f==b)null!=a&&a();else if(this.isValidState()){var l=0,p=!1,q=mxUtils.bind(this,function(){if(null==k||!k())if(f!=this.file.getCurrentEtag())null!=a&&a();else if(this.isValidState()){var u=!0,d=window.setTimeout(mxUtils.bind(this,function(){u=!1;this.reload(a,e,k)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(f)+"&to="+
+encodeURIComponent(b)+(null!=c?"&secret="+encodeURIComponent(c):""),mxUtils.bind(this,function(c){this.file.stats.bytesReceived+=c.getText().length;window.clearTimeout(d);if(u&&(null==k||!k()))if(f!=this.file.getCurrentEtag())null!=a&&a();else if(this.isValidState()){var g=null,v=[];if(200<=c.getStatus()&&299>=c.getStatus()&&0<c.getText().length)try{var t=JSON.parse(c.getText());if(null!=t&&0<t.length)for(var y=0;y<t.length;y++){var A=this.stringToObject(t[y]);if(A.v>DrawioFileSync.PROTOCOL){p=!0;
+v=[];break}else if(A.v===DrawioFileSync.PROTOCOL&&null!=A.d)g=A.d.checksum,v.push(A.d.patch);else{p=!0;v=[];break}}}catch(n){v=[],null!=window.console&&"1"==urlParams.test&&console.log(n)}try{0<v.length?(this.file.stats.cacheHits++,this.merge(v,g,b,a,e,k)):l<=this.maxCacheReadyRetries&&!p&&401!=c.getStatus()?(l++,this.file.stats.cacheMiss++,window.setTimeout(q,(l+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(a,e,k))}catch(n){null!=e&&e(n)}}else null!=e&&e()}))}else null!=e&&e()});
+window.setTimeout(q,this.cacheReadyDelay)}else null!=e&&e()}};DrawioFileSync.prototype.reload=function(b,c,a,e){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=b&&b()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),a,e)};
 DrawioFileSync.prototype.merge=function(b,c,a,e,k,f){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;if(!this.file.ignorePatches(b)){for(f=0;f<b.length;f++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages,b[f]);var l=null!=
-c?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentEtag(),"to",a,"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",b,"checksum",c==l,c);if(null!=c&&c!=l){var q=this.ui.hashValue(this.file.getCurrentEtag()),p=this.ui.hashValue(a);this.file.checksumError(k,b,"From: "+q+"\nTo: "+p+"\nChecksum: "+c+"\nCurrent: "+l,a,"merge");return}this.file.patch(b,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:
-null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.setCurrentEtag(a);this.file.backupPatch=null;null!=e&&e()}catch(u){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=k&&k(u);try{this.file.errorReportsEnabled&&(q=this.ui.hashValue(this.file.getCurrentEtag()),p=this.ui.hashValue(a),this.file.sendErrorReport("Error in merge","From: "+q+"\nTo: "+p+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(b,null,2)),
-u))}catch(d){}}};
+c?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentEtag(),"to",a,"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",b,"checksum",c==l,c);if(null!=c&&c!=l){var p=this.ui.hashValue(this.file.getCurrentEtag()),q=this.ui.hashValue(a);this.file.checksumError(k,b,"From: "+p+"\nTo: "+q+"\nChecksum: "+c+"\nCurrent: "+l,a,"merge");return}this.file.patch(b,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:
+null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.setCurrentEtag(a);this.file.backupPatch=null;null!=e&&e()}catch(g){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=k&&k(g);try{if(this.file.errorReportsEnabled)p=this.ui.hashValue(this.file.getCurrentEtag()),q=this.ui.hashValue(a),this.file.sendErrorReport("Error in merge","From: "+p+"\nTo: "+q+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(b,null,2)),
+g);else{var u=this.file.getCurrentUser(),d=null!=u?u.id:"unknown";EditorUi.logError("Error in merge",null,this.file.getMode()+"."+this.file.getId(),d,g)}}catch(m){}}};
 DrawioFileSync.prototype.descriptorChanged=function(b){this.lastModified=this.file.getLastModifiedDate();if(null!=this.channelId){var c=this.objectToString(this.createMessage({a:"desc",m:this.lastModified.getTime()})),a=this.file.getCurrentEtag(),e=this.objectToString({});mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(b)+"&to="+encodeURIComponent(a)+"&msg="+encodeURIComponent(c)+"&data="+encodeURIComponent(e));this.file.stats.bytesSent+=e.length;this.file.stats.msgSent++}this.updateStatus()};
 DrawioFileSync.prototype.objectToString=function(b){b=this.ui.editor.graph.compress(JSON.stringify(b));null!=this.key&&"undefined"!==typeof CryptoJS&&(b=CryptoJS.AES.encrypt(b,this.key).toString());return b};DrawioFileSync.prototype.stringToObject=function(b){null!=this.key&&"undefined"!==typeof CryptoJS&&(b=CryptoJS.AES.decrypt(b,this.key).toString(CryptoJS.enc.Utf8));return JSON.parse(this.ui.editor.graph.decompress(b))};
 DrawioFileSync.prototype.fileSaved=function(b,c,a,e){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline()&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId&&this.isConnected())){var k=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);e=this.ui.getHashValueForPages(b);k=this.ui.diffPages(k,b);c=this.file.getDescriptorEtag(c);
-var f=this.file.getCurrentEtag(),l=this.objectToString(this.createMessage({patch:k,checksum:e})),q=this.objectToString(this.createMessage({m:this.lastModified.getTime()})),p=this.file.getDescriptorSecret(this.file.getDescriptor());this.file.stats.bytesSent+=l.length;this.file.stats.msgSent++;mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(c)+"&to="+encodeURIComponent(f)+"&msg="+encodeURIComponent(q)+(null!=p?"&secret="+encodeURIComponent(p):"")+(l.length<this.maxCacheEntrySize?
+var f=this.file.getCurrentEtag(),l=this.objectToString(this.createMessage({patch:k,checksum:e})),p=this.objectToString(this.createMessage({m:this.lastModified.getTime()})),q=this.file.getDescriptorSecret(this.file.getDescriptor());this.file.stats.bytesSent+=l.length;this.file.stats.msgSent++;mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(c)+"&to="+encodeURIComponent(f)+"&msg="+encodeURIComponent(p)+(null!=q?"&secret="+encodeURIComponent(q):"")+(l.length<this.maxCacheEntrySize?
 "&data="+encodeURIComponent(l):""),mxUtils.bind(this,function(a){}));"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",c,"to",f,l.length,"bytes","diff",k,"checksum",e)}this.file.shadowPages=b;null!=a&&a()};DrawioFileSync.prototype.getIdParameters=function(){var b="id="+this.channelId;null!=this.pusher&&null!=this.pusher.connection&&(b+="&sid="+this.pusher.connection.socket_id);return b};DrawioFileSync.prototype.createMessage=function(b){return{v:DrawioFileSync.PROTOCOL,d:b,c:this.clientId}};
 DrawioFileSync.prototype.fileConflict=function(b,c,a){this.catchupRetryCount++;if(this.catchupRetryCount<this.maxCatchupRetries)if(this.file.stats.conflicts++,null!=b){var e=this.file.getDescriptorEtag(b);b=this.file.getDescriptorSecret(b);this.catchup(e,b,c,a)}else this.fileChanged(c,a);else this.file.stats.timeouts++,this.catchupRetryCount=0,null!=a&&a({message:mxResources.get("timeout")})};
 DrawioFileSync.prototype.stop=function(){null!=this.pusher&&(EditorUi.debug("Sync.stop",[this]),null!=this.pusher.connection&&(this.pusher.connection.unbind("state_change",this.connectionListener),this.pusher.connection.unbind("error",this.pusherErrorListener)),null!=this.channel&&(this.channel.unbind("changed",this.changeListener),this.channel=null),this.pusher.disconnect(),this.pusher=null);this.updateOnlineState();this.updateStatus()};
 DrawioFileSync.prototype.destroy=function(){if(null!=this.channelId){var b=this.file.getCurrentUser(),c={a:"leave"};null!=b&&(c.name=b.displayName,c.uid=b.id);mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(this.objectToString(this.createMessage(c))));this.file.stats.msgSent++}this.stop();null!=this.updateStatusThread&&(window.clearInterval(this.updateStatusThread),this.updateStatusThread=null);null!=this.onlineListener&&(mxEvent.removeListener(window,"online",this.onlineListener),
 this.onlineListener=null);null!=this.visibleListener&&(mxEvent.removeListener(document,"visibilitychange",this.visibleListener),this.visibleListener=null);null!=this.activityListener&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.activityListener),mxEvent.removeListener(document,"keypress",this.activityListener),mxEvent.removeListener(window,"focus",this.activityListener),!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&(mxEvent.removeListener(document,"touchstart",this.activityListener),
 mxEvent.removeListener(document,"touchmove",this.activityListener)),this.activityListener=null);null!=this.collaboratorsElement&&(this.collaboratorsElement.parentNode.removeChild(this.collaboratorsElement),this.collaboratorsElement=null)};App=function(b,c,a){EditorUi.call(this,b,c,null!=a?a:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_SVG?mxGraph.prototype.warningImage.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE7SURBVHjaYvz//z8DJQAggBjwGXDuHMP/tWuD/uPTCxBAOA0AaQRK/f/+XeJ/cbHlf1wGAAQQTgPu3QNLgfHSpZo4DQAIIKwGwGyH4e/fFbG6AiQJEEAs2Ew2NFzH8OOHBMO6dT/A/KCg7wxGRh+wuhQggDBcALMdFIAcHBxgDGJjcwVIIUAAYbhAUXEdVos4OO4DXcGBIQ4QQCguQPY7sgtgAYruCpAgQACx4LJdU1OCwctLEcyWlLwPJF+AXQE0EMUBAAEEdwF6yMOiD4RRY0QT7gqQAEAAseDzu6XldYYPH9DD4joQa8L5AAEENgWb7SBcXa0JDQMBrK4AcQACiAlfyOMCEFdAnAYQQEz4FLa0XGf4/v0H0IIPONUABBAjyBmMjIwMS5cK/L927QORbtBkaG29DtYLEGAAH6f7oq3Zc+kAAAAASUVORK5CYII=":
-(new Image).src=mxGraph.prototype.warningImage.src;window.openWindow=mxUtils.bind(this,function(a,b,c){var e=null;try{e=window.open(a)}catch(q){}null==e||void 0===e?this.showDialog((new PopupDialog(this,a,b,c)).container,320,140,!0,!0):null!=b&&b()});this.updateDocumentTitle();this.updateUi();window.showOpenAlert=mxUtils.bind(this,function(a){null!=window.openFile&&window.openFile.cancel(!0);this.handleError(a)});this.editor.chromeless&&!this.editor.editable||this.addFileDropHandler([document]);if(null!=
+(new Image).src=mxGraph.prototype.warningImage.src;window.openWindow=mxUtils.bind(this,function(a,b,c){var e=null;try{e=window.open(a)}catch(p){}null==e||void 0===e?this.showDialog((new PopupDialog(this,a,b,c)).container,320,140,!0,!0):null!=b&&b()});this.updateDocumentTitle();this.updateUi();window.showOpenAlert=mxUtils.bind(this,function(a){null!=window.openFile&&window.openFile.cancel(!0);this.handleError(a)});this.editor.chromeless&&!this.editor.editable||this.addFileDropHandler([document]);if(null!=
 App.DrawPlugins){for(b=0;b<App.DrawPlugins.length;b++)try{App.DrawPlugins[b](this)}catch(e){null!=window.console&&console.log("Plugin Error:",e,App.DrawPlugins[b])}window.Draw.loadPlugin=mxUtils.bind(this,function(a){a(this)})}this.load()};App.ERROR_TIMEOUT="timeout";App.ERROR_BUSY="busy";App.ERROR_UNKNOWN="unknown";App.MODE_GOOGLE="google";App.MODE_DROPBOX="dropbox";App.MODE_ONEDRIVE="onedrive";App.MODE_GITHUB="github";App.MODE_DEVICE="device";App.MODE_BROWSER="browser";App.MODE_TRELLO="trello";
 App.DROPBOX_APPKEY="libwls2fa9szdji";App.DROPBOX_URL="js/dropbox/Dropbox-sdk.min.js";App.DROPINS_URL="https://www.dropbox.com/static/api/2/dropins.js";App.ONEDRIVE_URL=mxClient.IS_IE11?"https://js.live.net/v7.2/OneDrive.js":"js/onedrive/OneDrive.js";App.TRELLO_URL="https://api.trello.com/1/client.js";App.TRELLO_JQUERY_URL="https://code.jquery.com/jquery-1.7.1.min.js";App.FOOTER_PLUGIN_URL="https://www.jgraph.com/drawio-footer.js";App.PUSHER_KEY="1e756b07a690c5bdb054";App.PUSHER_CLUSTER="eu";
 App.PUSHER_URL="https://js.pusher.com/4.3/pusher.min.js";App.GOOGLE_APIS="client,drive-share";
@@ -8323,11 +8332,11 @@ null!=window.DrawDropboxClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.db
 null!=window.DrawOneDriveClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.ONEDRIVE_URL,window.DrawOneDriveClientCallback):"undefined"===typeof window.OneDrive&&(window.OneDriveClient=null);"function"===typeof window.TrelloClient&&"undefined"===typeof window.Trello&&null!=window.DrawTrelloClientCallback&&("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==
 urlParams.tr)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode)?mxscript(App.TRELLO_JQUERY_URL,function(){mxscript(App.TRELLO_URL,function(){DrawTrelloClientCallback()})}):"undefined"===typeof window.Trello&&(window.TrelloClient=null)}null!=b&&b(a);"0"!=urlParams.chrome&&"1"==urlParams.test&&(EditorUi.debug("Started in "+((new Date).getTime()-t0.getTime())+"ms"),null!=urlParams["export"]&&EditorUi.debug("Export:",EXPORT_URL))},function(b){b=document.getElementById("geStatus");null!=
 b&&(b.innerHTML="Error loading page. <a>Please try refreshing.</a>",b.getElementsByTagName("a")[0].onclick=function(){mxLanguage="en";a(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))})})}function e(){mxResources.loadDefaultBundle=!1;a(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}window.onerror=function(a,b,c,d,e){EditorUi.logError(a,b,c,d,e)};if("1"==urlParams.embed||
-"1"==urlParams.lightbox){var k=document.getElementById("geInfo");null!=k&&k.parentNode.removeChild(k)}if(null!=window.mxscript){if("1"==urlParams.offline||"1"==urlParams.appcache)mxscript("js/shapes.min.js"),mxscript("js/stencils.min.js"),mxscript("js/extensions.min.js"),k=document.createElement("iframe"),k.setAttribute("width","0"),k.setAttribute("height","0"),k.setAttribute("src","offline.html"),document.body.appendChild(k);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||
-mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){var k=null!=mxSettings.settings?mxSettings.getPlugins():null,f={},l=urlParams.p;App.initPluginCallback();if(null!=l)for(var q=l.split(";"),l=0;l<q.length;l++){var p=App.pluginRegistry[q[l]];null!=p&&null==f[p]?(f[p]=!0,"undefined"===typeof window.drawDevUrl?mxscript(p):mxscript(drawDevUrl+p)):null!=window.console&&console.log("Unknown plugin:",q[l])}else"0"==urlParams.chrome||EditorUi.isElectronApp||mxscript(App.FOOTER_PLUGIN_URL,
-null,null,null,mxClient.IS_SVG);if(null!=k&&0<k.length&&"0"!=urlParams.plugins){for(var q=window.location.protocol+"//"+window.location.host,u=!0,l=0;l<k.length&&u;l++)"/"!=k[l].charAt(0)&&k[l].substring(0,q.length)!=q&&(u=!1);if(u||mxUtils.confirm(mxResources.replacePlaceholders("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",[k.join("\n")]).replace(/\\n/g,
-"\n")))for(l=0;l<k.length;l++)try{null==f[k[l]]&&(f[p]=!0,mxscript(k[l]))}catch(m){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&&
-Editor.initMath();if("1"==urlParams.configure){var d=window.opener||window.parent,g=function(a){if(a.source==d)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",g),Editor.configure(b.config,!0),mxSettings.load(),e())}catch(t){null!=window.console&&console.log("Error in configuration: "+t)}};mxEvent.addListener(window,"message",g);d.postMessage(JSON.stringify({event:"load"}),"*")}else e()};mxUtils.extend(App,EditorUi);
+"1"==urlParams.lightbox){var k=document.getElementById("geInfo");null!=k&&k.parentNode.removeChild(k)}null!=document.referrer&&"aws3"==urlParams.libs&&"https://aws.amazon.com/architecture/icons/"==document.referrer.substring(0,42)&&(urlParams.libs="aws4");if(null!=window.mxscript){if("1"==urlParams.offline||"1"==urlParams.appcache)mxscript("js/shapes.min.js"),mxscript("js/stencils.min.js"),mxscript("js/extensions.min.js"),k=document.createElement("iframe"),k.setAttribute("width","0"),k.setAttribute("height",
+"0"),k.setAttribute("src","offline.html"),document.body.appendChild(k);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){var k=null!=mxSettings.settings?mxSettings.getPlugins():null,f={},l=urlParams.p;App.initPluginCallback();if(null!=l)for(var p=l.split(";"),l=0;l<p.length;l++){var q=App.pluginRegistry[p[l]];null!=q&&null==f[q]?(f[q]=!0,"undefined"===typeof window.drawDevUrl?mxscript(q):mxscript(drawDevUrl+
+q)):null!=window.console&&console.log("Unknown plugin:",p[l])}else"0"==urlParams.chrome||EditorUi.isElectronApp||mxscript(App.FOOTER_PLUGIN_URL,null,null,null,mxClient.IS_SVG);if(null!=k&&0<k.length&&"0"!=urlParams.plugins){for(var p=window.location.protocol+"//"+window.location.host,u=!0,l=0;l<k.length&&u;l++)"/"!=k[l].charAt(0)&&k[l].substring(0,p.length)!=p&&(u=!1);if(u||mxUtils.confirm(mxResources.replacePlaceholders("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",
+[k.join("\n")]).replace(/\\n/g,"\n")))for(l=0;l<k.length;l++)try{null==f[k[l]]&&(f[q]=!0,mxscript(k[l]))}catch(m){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=
+null)}"0"!=urlParams.math&&Editor.initMath();if("1"==urlParams.configure){var d=window.opener||window.parent,g=function(a){if(a.source==d)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",g),Editor.configure(b.config,!0),mxSettings.load(),e())}catch(t){null!=window.console&&console.log("Error in configuration: "+t)}};mxEvent.addListener(window,"message",g);d.postMessage(JSON.stringify({event:"load"}),"*")}else e()};mxUtils.extend(App,EditorUi);
 App.prototype.defaultUserPicture="https://lh3.googleusercontent.com/-HIzvXUy6QUY/AAAAAAAAAAI/AAAAAAAAAAA/giuR7PQyjEk/photo.jpg?sz=30";App.prototype.shareImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowOTgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMjU2NzdEMTcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMjU2NzdEMDcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNjgwMTE3NDA3MjA2ODExODcxRkM4MUY1OTFDMjQ5OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrM/fs0AAADgSURBVHjaYmDAA/7//88MwgzkAKDGFiD+BsQ/QWxSNaf9RwN37twpI8WAS+gGfP78+RpQSoRYA36iG/D379+vQClNdLVMOMz4gi7w79+/n0CKg1gD9qELvH379hzIHGK9oA508ieY8//8+fO5rq4uFCilRKwL1JmYmNhhHEZGRiZ+fn6Q2meEbDYG4u3/cYCfP38uA7kOm0ZOIJ7zn0jw48ePPiDFhmzArv8kgi9fvuwB+w5qwH9ykjswbFSZyM4sEMDPBDTlL5BxkFSd7969OwZ2BZKYGhDzkmjOJ4AAAwBhpRqGnEFb8QAAAABJRU5ErkJggg==";
 App.prototype.chevronUpImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDg2NEE3NUY1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDg2NEE3NjA1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ODY0QTc1RDUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0ODY0QTc1RTUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg+qUokAAAAMUExURQAAANnZ2b+/v////5bgre4AAAAEdFJOU////wBAKqn0AAAAL0lEQVR42mJgRgMMRAswMKAKMDDARBjg8lARBoR6KImkH0wTbygT6YaS4DmAAAMAYPkClOEDDD0AAAAASUVORK5CYII=":
 IMAGE_PATH+"/chevron-up.png";
@@ -8358,9 +8367,9 @@ App.prototype.resetRecent=function(b){if(isLocalStorage&&null!=localStorage)try{
 App.prototype.onBeforeUnload=function(){if("1"==urlParams.embed&&this.editor.modified)return mxResources.get("allChangesLost");var b=this.getCurrentFile();if(null!=b)if(b.constructor!=LocalFile||""!=b.getHash()||b.isModified()||"1"==urlParams.nowarn||this.isDiagramEmpty()||null!=urlParams.url||this.editor.isChromelessView()){if(b.isModified())return mxResources.get("allChangesLost");b.close(!0)}else return mxResources.get("ensureDataSaved")};
 App.prototype.updateDocumentTitle=function(){if(!this.editor.graph.isLightboxView()){var b=this.editor.appName,c=this.getCurrentFile();this.isOfflineApp()&&(b+=" app");null!=c&&(b=(null!=c.getTitle()?c.getTitle():this.defaultFilename)+" - "+b);document.title=b}};App.prototype.createCrcTable=function(){for(var b=[],c,a=0;256>a;a++){c=a;for(var e=0;8>e;e++)c=c&1?3988292384^c>>>1:c>>>1;b[a]=c}return b};
 App.prototype.getThumbnail=function(b,c){var a=!1;try{null==this.thumbImageCache&&(this.thumbImageCache={});var e=this.editor.graph;if(null!=this.pages&&this.currentPage!=this.pages[0]){var e=this.createTemporaryGraph(e.getStylesheet()),k=e.getGlobalVariable,f=this.pages[0];e.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:k.apply(this,arguments)};document.body.appendChild(e.container);e.model.setRoot(f.root)}if(mxClient.IS_CHROMEAPP||!e.mathEnabled&&this.useCanvasForExport)this.exportToCanvas(mxUtils.bind(this,
-function(a){e!=this.editor.graph&&e.container.parentNode.removeChild(e.container);c(a)}),b,this.thumbImageCache,"#ffffff",function(){c()},null,null,null,null,null,null,e),a=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var l=document.createElement("canvas"),q=e.getGraphBounds(),p=b/q.width,p=Math.min(1,Math.min(3*b/(4*q.height),p)),u=Math.floor(q.x),d=Math.floor(q.y);l.setAttribute("width",Math.ceil(p*(q.width+4)));l.setAttribute("height",Math.ceil(p*(q.height+4)));var g=l.getContext("2d");
-g.scale(p,p);g.translate(-u,-d);var m=e.background;if(null==m||""==m||m==mxConstants.NONE)m="#ffffff";g.save();g.fillStyle=m;g.fillRect(u,d,Math.ceil(q.width+4),Math.ceil(q.height+4));g.restore();var v=new mxJsCanvas(l),t=new mxAsyncCanvas(this.thumbImageCache);v.images=this.thumbImageCache.images;var y=new mxImageExport;y.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};y.drawText=function(a,
-b){};y.drawState(e.getView().getState(e.model.root),t);t.finish(mxUtils.bind(this,function(){y.drawState(e.getView().getState(e.model.root),v);e!=this.editor.graph&&e.container.parentNode.removeChild(e.container);c(l)}));a=!0}}catch(B){e!=this.editor.graph&&e.container.parentNode.removeChild(e.container)}return a};
+function(a){e!=this.editor.graph&&e.container.parentNode.removeChild(e.container);c(a)}),b,this.thumbImageCache,"#ffffff",function(){c()},null,null,null,null,null,null,e),a=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var l=document.createElement("canvas"),p=e.getGraphBounds(),q=b/p.width,q=Math.min(1,Math.min(3*b/(4*p.height),q)),u=Math.floor(p.x),d=Math.floor(p.y);l.setAttribute("width",Math.ceil(q*(p.width+4)));l.setAttribute("height",Math.ceil(q*(p.height+4)));var g=l.getContext("2d");
+g.scale(q,q);g.translate(-u,-d);var m=e.background;if(null==m||""==m||m==mxConstants.NONE)m="#ffffff";g.save();g.fillStyle=m;g.fillRect(u,d,Math.ceil(p.width+4),Math.ceil(p.height+4));g.restore();var v=new mxJsCanvas(l),t=new mxAsyncCanvas(this.thumbImageCache);v.images=this.thumbImageCache.images;var y=new mxImageExport;y.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};y.drawText=function(a,
+b){};y.drawState(e.getView().getState(e.model.root),t);t.finish(mxUtils.bind(this,function(){y.drawState(e.getView().getState(e.model.root),v);e!=this.editor.graph&&e.container.parentNode.removeChild(e.container);c(l)}));a=!0}}catch(A){e!=this.editor.graph&&e.container.parentNode.removeChild(e.container)}return a};
 App.prototype.createBackground=function(){var b=this.createDiv("background");b.style.position="absolute";b.style.background="white";b.style.left="0px";b.style.top="0px";b.style.bottom="0px";b.style.right="0px";mxUtils.setOpacity(b,100);mxClient.IS_QUIRKS&&new mxDivResizer(b);return b};
 (function(){var b=EditorUi.prototype.setMode;App.prototype.setMode=function(c,a){b.apply(this,arguments);null!=this.mode&&(Editor.useLocalStorage=this.mode==App.MODE_BROWSER);if(null!=this.appIcon){var e=this.getCurrentFile();c=null!=e?e.getMode():c;c==App.MODE_GOOGLE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("googleDrive")])),this.appIcon.style.cursor="pointer"):c==App.MODE_DROPBOX?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("dropbox")])),
 this.appIcon.style.cursor="pointer"):c==App.MODE_ONEDRIVE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("oneDrive")])),this.appIcon.style.cursor="pointer"):(this.appIcon.removeAttribute("title"),this.appIcon.style.cursor="default")}if(a)try{if(isLocalStorage)localStorage.setItem(".mode",c);else if("undefined"!=typeof Storage){var k=new Date;k.setYear(k.getFullYear()+1);document.cookie="MODE="+c+"; expires="+k.toUTCString()}}catch(f){}}})();
@@ -8376,11 +8385,11 @@ App.prototype.showRefreshDialog=function(b,c){if(!this.showingRefreshDialog&&(th
 this.createRealtimeNotice();a.style.left="0";a.style.right="0";a.style.borderRadius="0";a.style.borderLeftStyle="none";a.style.borderRightStyle="none";a.style.marginBottom="26px";a.style.padding="8px 0 8px 0";this.dialog.container.appendChild(a)}};
 App.prototype.showAlert=function(b){if(null!=b&&0<b.length){var c=document.createElement("div");c.className="geAlert";c.style.zIndex=2E9;c.style.left="50%";c.style.top="-100%";mxUtils.setPrefixedStyle(c.style,"transform","translate(-50%,0%)");mxUtils.setPrefixedStyle(c.style,"transition","all 1s ease");c.innerHTML=b;b=document.createElement("a");b.className="geAlertLink";b.style.textAlign="right";b.style.marginTop="20px";b.style.display="block";b.setAttribute("title",mxResources.get("close"));b.innerHTML=
 mxResources.get("close");c.appendChild(b);mxEvent.addListener(b,"click",function(a){null!=c.parentNode&&(c.parentNode.removeChild(c),mxEvent.consume(a))});document.body.appendChild(c);window.setTimeout(function(){c.style.top="30px"},10);window.setTimeout(function(){mxUtils.setPrefixedStyle(c.style,"transition","all 2s ease");c.style.opacity="0";window.setTimeout(function(){null!=c.parentNode&&c.parentNode.removeChild(c)},2E3)},15E3)}};
-App.prototype.start=function(){this.bg.parentNode.removeChild(this.bg);this.restoreLibraries();this.spinner.stop();try{if("1"!=urlParams.client&&"1"!=urlParams.embed&&mxEvent.addListener(window,"hashchange",mxUtils.bind(this,function(a){try{var b=this.getDiagramId(),c=this.getCurrentFile();null!=c&&c.getHash()==b||this.loadFile(b,!0)}catch(q){null!=document.body&&this.handleError(q,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=
+App.prototype.start=function(){this.bg.parentNode.removeChild(this.bg);this.restoreLibraries();this.spinner.stop();try{if("1"!=urlParams.client&&"1"!=urlParams.embed&&mxEvent.addListener(window,"hashchange",mxUtils.bind(this,function(a){try{var b=this.getDiagramId(),c=this.getCurrentFile();null!=c&&c.getHash()==b||this.loadFile(b,!0)}catch(p){null!=document.body&&this.handleError(p,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=
 a?a.getHash():""}))}})),(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.url)this.loadFile("U"+urlParams.url,!0);else if(null==this.getCurrentFile()){var b=mxUtils.bind(this,function(){if("1"==urlParams.client&&(null==window.location.hash||0==window.location.hash.length||"#P"==window.location.hash.substring(0,2))){var a=mxUtils.bind(this,function(a){"data:image/png;base64,"==a.substring(0,22)&&(a=this.extractGraphModelFromPng(a));var b=urlParams.title,b=null!=b?decodeURIComponent(b):
 this.defaultFilename;a=new LocalFile(this,a,b,!0);null!=window.location.hash&&"#P"==window.location.hash.substring(0,2)&&(a.getHash=function(){return window.location.hash.substring(1)});this.fileLoaded(a);this.getCurrentFile().setModified(!this.editor.chromeless)}),b=window.opener||window.parent;if(b!=window){var c=urlParams.create;null!=c?a(b[decodeURIComponent(c)]):(c=urlParams.data,null!=c?a(decodeURIComponent(c)):this.installMessageHandler(mxUtils.bind(this,function(c,d){d.source==b&&a(c)})))}}else if(null==
-this.dialog)if("1"==urlParams.demo)c=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=c;else{c=!1;try{c=null!=window.opener&&null!=window.opener.openFile}catch(u){}if(c)this.spinner.spin(document.body,mxResources.get("loading"));else if(c=this.getDiagramId(),"0"!=urlParams.splash||null!=c&&0!=c.length)this.loadFile(c);else if(!mxClient.IS_CHROMEAPP){var e=this.getDraft(),p=null!=e?e.data:this.getFileData(),c=Editor.useLocalStorage;
-this.createFile(this.defaultFilename,p,null,null,null,null,null,!0);Editor.useLocalStorage=c;null!=e&&(c=this.getCurrentFile(),null!=c&&c.addUnsavedStatus())}}}),c=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=c&&0<c.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var a=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create",
+this.dialog)if("1"==urlParams.demo)c=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=c;else{c=!1;try{c=null!=window.opener&&null!=window.opener.openFile}catch(u){}if(c)this.spinner.spin(document.body,mxResources.get("loading"));else if(c=this.getDiagramId(),"0"!=urlParams.splash||null!=c&&0!=c.length)this.loadFile(c);else if(!mxClient.IS_CHROMEAPP){var e=this.getDraft(),q=null!=e?e.data:this.getFileData(),c=Editor.useLocalStorage;
+this.createFile(this.defaultFilename,q,null,null,null,null,null,!0);Editor.useLocalStorage=c;null!=e&&(c=this.getCurrentFile(),null!=c&&c.addUnsavedStatus())}}}),c=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=c&&0<c.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var a=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create",
 "title"]))}),e=mxUtils.bind(this,function(a){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,a,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var b=urlParams.title,b=null!=b?decodeURIComponent(b):this.defaultFilename;a=this.getServiceCount(!0);var c=4>=a?4:3,b=new CreateDialog(this,b,mxUtils.bind(this,function(a,b){if(null==b){this.hideDialog();var c=Editor.useLocalStorage;this.createFile(0<a.length?a:this.defaultFilename,this.getFileData(),null,
 null,null,!0,null,!0);Editor.useLocalStorage=c}else this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,this.getFileData(!0),null,b,null,!0,c)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,c);this.showDialog(b.container,380,a>c?390:270,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&this.showSplash()}));b.init()}}),c=decodeURIComponent(c);if("http://"!=c.substring(0,7)&&"https://"!=c.substring(0,8))try{null!=window.opener&&null!=window.opener[c]?e(window.opener[c]):
 this.handleError(null,mxResources.get("errorLoadingFile"))}catch(k){this.handleError(k,mxResources.get("errorLoadingFile"))}else this.loadTemplate(c,function(a){e(a)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"),a)}))}else(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action&&null!=this.stateArg.ids&&(window.location.hash="G"+this.stateArg.ids[0]),(null==window.location.hash||
@@ -8394,26 +8403,26 @@ App.prototype.pickFile=function(b){b=null!=b?b:this.mode;if(b==App.MODE_GOOGLE)n
 "change",mxUtils.bind(this,function(){null!=a.files&&this.openFiles(a.files)}));a.click()}else{this.hideDialog();window.openNew=null!=this.getCurrentFile()&&!this.isDiagramEmpty();window.baseUrl=this.getUrl();window.openKey="open";var e=Editor.useLocalStorage;Editor.useLocalStorage=b==App.MODE_BROWSER;this.openFile();window.openFile.setConsumer(mxUtils.bind(this,function(a,c){this.useCanvasForExport||".png"!=c.substring(c.length-4)||(c=c.substring(0,c.length-4)+".xml");this.fileLoaded(b==App.MODE_BROWSER?
 new StorageFile(this,a,c):new LocalFile(this,a,c))}));var k=this.dialog,f=k.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=e;f.apply(k,arguments);null==this.getCurrentFile()&&this.showSplash()})}}};
 App.prototype.pickLibrary=function(b){b=null!=b?b:this.mode;if(b==App.MODE_GOOGLE||b==App.MODE_DROPBOX||b==App.MODE_ONEDRIVE||b==App.MODE_GITHUB||b==App.MODE_TRELLO){var c=b==App.MODE_GOOGLE?this.drive:b==App.MODE_ONEDRIVE?this.oneDrive:b==App.MODE_GITHUB?this.gitHub:b==App.MODE_TRELLO?this.trello:this.dropbox;null!=c&&c.pickLibrary(mxUtils.bind(this,function(a,b){if(null!=b)try{this.loadLibrary(b)}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}else this.spinner.spin(document.body,
-mxResources.get("loading"))&&c.getLibrary(a,mxUtils.bind(this,function(a){this.spinner.stop();try{this.loadLibrary(a)}catch(q){this.handleError(q,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(a){this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)}))}))}else if(b!=App.MODE_DEVICE||!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11){window.openNew=!1;window.openKey="open";var a=Editor.useLocalStorage;Editor.useLocalStorage=b==App.MODE_BROWSER;window.openFile=
+mxResources.get("loading"))&&c.getLibrary(a,mxUtils.bind(this,function(a){this.spinner.stop();try{this.loadLibrary(a)}catch(p){this.handleError(p,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(a){this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)}))}))}else if(b!=App.MODE_DEVICE||!Graph.fileSupport||mxClient.IS_IE||mxClient.IS_IE11){window.openNew=!1;window.openKey="open";var a=Editor.useLocalStorage;Editor.useLocalStorage=b==App.MODE_BROWSER;window.openFile=
 new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,c){try{this.loadLibrary(b==App.MODE_BROWSER?new StorageLibrary(this,a,c):new LocalLibrary(this,a,c))}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){Editor.useLocalStorage=a;window.openFile=null})}else{var e=document.createElement("input");
-e.setAttribute("type","file");mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if(null!=e.files)for(var a=0;a<e.files.length;a++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.loadLibrary(new LocalLibrary(this,b.target.result,a.name))}catch(p){this.handleError(p,mxResources.get("errorLoadingFile"))}});b.readAsText(a)})(e.files[a])}));e.click()}};
-App.prototype.saveLibrary=function(b,c,a,e,k,f,l){e=null!=e?e:this.mode;k=null!=k?k:!1;f=null!=f?f:!1;var q=this.createLibraryDataFromImages(c),p=mxUtils.bind(this,function(a){this.spinner.stop();null!=l&&l();this.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)});null==a&&e==App.MODE_DEVICE&&(a=new LocalLibrary(this,q,b));if(null==a)this.pickFolder(e,mxUtils.bind(this,function(a){e==App.MODE_GOOGLE&&null!=this.drive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.drive.insertFile(b,
-q,a,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,this.drive.libraryMimeType):e==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(b,q,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,a):e==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(b,q,mxUtils.bind(this,
-function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,a):e==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(b,q,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),p,a):e==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(b,q,mxUtils.bind(this,function(a){this.spinner.stop();
-this.hideDialog(!0);this.libraryLoaded(a,c)}),p,a):e==App.MODE_BROWSER?(a=mxUtils.bind(this,function(){var a=new StorageLibrary(this,q,b);a.saveFile(b,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(a,c)}),p)}),null==localStorage.getItem(b)?a():this.confirm(mxResources.get("replaceIt",[b]),a)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(k||this.spinner.spin(document.body,mxResources.get("saving"))){a.setData(q);var u=mxUtils.bind(this,
-function(){a.save(!0,mxUtils.bind(this,function(b){this.spinner.stop();this.hideDialog(!0);f||this.libraryLoaded(a,c);null!=l&&l()}),p)});if(b!=a.getTitle()){var d=a.getHash();a.rename(b,mxUtils.bind(this,function(b){a.constructor!=LocalLibrary&&d!=a.getHash()&&(mxSettings.removeCustomLibrary(d),mxSettings.addCustomLibrary(a.getHash()));this.removeLibrarySidebar(d);u()}),p)}else u()}};
-App.prototype.saveFile=function(b,c){var a=this.getCurrentFile();if(null!=a){var e=mxUtils.bind(this,function(){this.removeDraft();this.getCurrentFile()==a||a.isModified()||(a.getMode()!=App.MODE_DEVICE?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("allChangesSaved"))):this.editor.setStatus(""));null!=c&&c()});if(b||null==a.getTitle()||null==this.mode){var k=null!=a.getTitle()?a.getTitle():this.defaultFilename,f=!mxClient.IS_IOS||!navigator.standalone,l=this.mode,q=this.getServiceCount(!0);
-isLocalStorage&&q++;var p=4>=q?2:6<q?4:3,k=new CreateDialog(this,k,mxUtils.bind(this,function(a,b){null!=a&&0<a.length&&(null==l&&b==App.MODE_DEVICE?(this.setMode(App.MODE_DEVICE),this.save(a,e)):"download"==b?(new LocalFile(this,null,a)).save():"_blank"==b?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):l!=b?this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,
-this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf(".")||/(\.drawio)$/i.test(a),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,b,e,null==this.mode,c)})):null!=b&&this.save(a,e))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,f,this.isOffline()?null:"https://desk.draw.io/support/solutions/articles/16000042485",!0,p);this.showDialog(k.container,460,q>p?390:270,!0,!0);k.init()}else this.save(a.getTitle(),e)}};
+e.setAttribute("type","file");mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if(null!=e.files)for(var a=0;a<e.files.length;a++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.loadLibrary(new LocalLibrary(this,b.target.result,a.name))}catch(q){this.handleError(q,mxResources.get("errorLoadingFile"))}});b.readAsText(a)})(e.files[a])}));e.click()}};
+App.prototype.saveLibrary=function(b,c,a,e,k,f,l){e=null!=e?e:this.mode;k=null!=k?k:!1;f=null!=f?f:!1;var p=this.createLibraryDataFromImages(c),q=mxUtils.bind(this,function(a){this.spinner.stop();null!=l&&l();this.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)});null==a&&e==App.MODE_DEVICE&&(a=new LocalLibrary(this,p,b));if(null==a)this.pickFolder(e,mxUtils.bind(this,function(a){e==App.MODE_GOOGLE&&null!=this.drive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.drive.insertFile(b,
+p,a,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),q,this.drive.libraryMimeType):e==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(b,p,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),q,a):e==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(b,p,mxUtils.bind(this,
+function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),q,a):e==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(b,p,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),q,a):e==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(b,p,mxUtils.bind(this,function(a){this.spinner.stop();
+this.hideDialog(!0);this.libraryLoaded(a,c)}),q,a):e==App.MODE_BROWSER?(a=mxUtils.bind(this,function(){var a=new StorageLibrary(this,p,b);a.saveFile(b,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(a,c)}),q)}),null==localStorage.getItem(b)?a():this.confirm(mxResources.get("replaceIt",[b]),a)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(k||this.spinner.spin(document.body,mxResources.get("saving"))){a.setData(p);var u=mxUtils.bind(this,
+function(){a.save(!0,mxUtils.bind(this,function(b){this.spinner.stop();this.hideDialog(!0);f||this.libraryLoaded(a,c);null!=l&&l()}),q)});if(b!=a.getTitle()){var d=a.getHash();a.rename(b,mxUtils.bind(this,function(b){a.constructor!=LocalLibrary&&d!=a.getHash()&&(mxSettings.removeCustomLibrary(d),mxSettings.addCustomLibrary(a.getHash()));this.removeLibrarySidebar(d);u()}),q)}else u()}};
+App.prototype.saveFile=function(b,c){var a=this.getCurrentFile();if(null!=a){var e=mxUtils.bind(this,function(){this.removeDraft();this.getCurrentFile()==a||a.isModified()||(a.getMode()!=App.MODE_DEVICE?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("allChangesSaved"))):this.editor.setStatus(""));null!=c&&c()});if(b||null==a.getTitle()||null==this.mode){var k=null!=a.getTitle()?a.getTitle():this.defaultFilename,f=!mxClient.IS_IOS||!navigator.standalone,l=this.mode,p=this.getServiceCount(!0);
+isLocalStorage&&p++;var q=4>=p?2:6<p?4:3,k=new CreateDialog(this,k,mxUtils.bind(this,function(a,b){null!=a&&0<a.length&&(null==l&&b==App.MODE_DEVICE?(this.setMode(App.MODE_DEVICE),this.save(a,e)):"download"==b?(new LocalFile(this,null,a)).save():"_blank"==b?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):l!=b?this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,
+this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf(".")||/(\.drawio)$/i.test(a),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,b,e,null==this.mode,c)})):null!=b&&this.save(a,e))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,f,this.isOffline()?null:"https://desk.draw.io/support/solutions/articles/16000042485",!0,q);this.showDialog(k.container,460,p>q?390:270,!0,!0);k.init()}else this.save(a.getTitle(),e)}};
 App.prototype.loadTemplate=function(b,c,a){var e=b;this.isCorsEnabledForUrl(e)||(e="t="+(new Date).getTime(),e=PROXY_URL+"?url="+encodeURIComponent(b)+"&"+e);this.loadUrl(e,mxUtils.bind(this,function(e){/(\.vsdx)($|\?)/i.test(b)?this.importVisio(this.base64ToBlob(e.substring(e.indexOf(",")+1)),function(a){c(a)},a,b):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(e,b)?this.parseFile(new Blob([e],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&
 200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&c(a.responseText)}),b):this.isLucidChartData(e)?this.convertLucidChart(e,mxUtils.bind(this,function(a){c(a)}),mxUtils.bind(this,function(b){a(b)})):(/(\.png)($|\?)/i.test(b)&&(e=this.extractGraphModelFromPng(e)),c(e))}),a,/(\.png)($|\?)/i.test(b)||/(\.vsdx)($|\?)/i.test(b))};
 App.prototype.getPeerForMode=function(b){return b==App.MODE_GOOGLE?this.drive:b==App.MODE_GITHUB?this.gitHub:b==App.MODE_DROPBOX?this.dropbox:b==App.MODE_ONEDRIVE?this.oneDrive:b==App.MODE_TRELLO?this.trello:null};
-App.prototype.createFile=function(b,c,a,e,k,f,l,q){e=q?null:null!=e?e:this.mode;if(null!=b&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var p=mxUtils.bind(this,function(){this.spinner.stop()}),u=mxUtils.bind(this,function(a){p();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(e==App.MODE_GOOGLE&&null!=this.drive)null==l&&null!=this.stateArg&&null!=this.stateArg.folderId&&(l=this.stateArg.folderId),
-this.drive.insertFile(b,c,l,mxUtils.bind(this,function(b){p();this.fileCreated(b,a,f,k)}),u);else if(e==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(b,c,mxUtils.bind(this,function(b){p();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(b,c,mxUtils.bind(this,function(b){p();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(b,c,mxUtils.bind(this,function(b){p();this.fileCreated(b,
-a,f,k)}),u);else if(e==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(b,c,mxUtils.bind(this,function(b){p();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_BROWSER){p();var d=mxUtils.bind(this,function(){var d=new StorageFile(this,c,b);d.saveFile(b,!1,mxUtils.bind(this,function(){this.fileCreated(d,a,f,k)}),u)});null==localStorage.getItem(b)?d():this.confirm(mxResources.get("replaceIt",[b]),d,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else p(),
-this.fileCreated(new LocalFile(this,c,b,null==e),a,f,k)}catch(g){p(),this.handleError(g)}}};
-App.prototype.fileCreated=function(b,c,a,e){var k=window.location.pathname;null!=c&&0<c.length&&(k+="?libs="+c);k=this.getUrl(k);b.getMode()!=App.MODE_DEVICE&&(k+="#"+b.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var f=b.getData(),f=0<f.length?this.editor.extractGraphModel(mxUtils.parseXml(f).documentElement,!0):null,l=window.location.protocol+"//"+window.location.hostname+k,q=f,p=null;null!=f&&/\.svg$/i.test(b.getTitle())&&(p=this.createTemporaryGraph(this.editor.graph.getStylesheet()),
-document.body.appendChild(p.container),q=this.decodeNodeIntoGraph(q,p));b.setData(this.createFileData(f,p,b,l));null!=p&&p.container.parentNode.removeChild(p.container);var u=mxUtils.bind(this,function(){this.spinner.stop()}),d=mxUtils.bind(this,function(){u();var d=this.getCurrentFile();null==a&&null!=d&&(a=!d.isModified()&&null==d.getMode());var f=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(b);a&&b.addAllSavedStatus();null!=c&&this.sidebar.showEntries(c)}),l=mxUtils.bind(this,
+App.prototype.createFile=function(b,c,a,e,k,f,l,p){e=p?null:null!=e?e:this.mode;if(null!=b&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var q=mxUtils.bind(this,function(){this.spinner.stop()}),u=mxUtils.bind(this,function(a){q();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(e==App.MODE_GOOGLE&&null!=this.drive)null==l&&null!=this.stateArg&&null!=this.stateArg.folderId&&(l=this.stateArg.folderId),
+this.drive.insertFile(b,c,l,mxUtils.bind(this,function(b){q();this.fileCreated(b,a,f,k)}),u);else if(e==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(b,c,mxUtils.bind(this,function(b){q();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(b,c,mxUtils.bind(this,function(b){q();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(b,c,mxUtils.bind(this,function(b){q();this.fileCreated(b,
+a,f,k)}),u);else if(e==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(b,c,mxUtils.bind(this,function(b){q();this.fileCreated(b,a,f,k)}),u,!1,l);else if(e==App.MODE_BROWSER){q();var d=mxUtils.bind(this,function(){var d=new StorageFile(this,c,b);d.saveFile(b,!1,mxUtils.bind(this,function(){this.fileCreated(d,a,f,k)}),u)});null==localStorage.getItem(b)?d():this.confirm(mxResources.get("replaceIt",[b]),d,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else q(),
+this.fileCreated(new LocalFile(this,c,b,null==e),a,f,k)}catch(g){q(),this.handleError(g)}}};
+App.prototype.fileCreated=function(b,c,a,e){var k=window.location.pathname;null!=c&&0<c.length&&(k+="?libs="+c);k=this.getUrl(k);b.getMode()!=App.MODE_DEVICE&&(k+="#"+b.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var f=b.getData(),f=0<f.length?this.editor.extractGraphModel(mxUtils.parseXml(f).documentElement,!0):null,l=window.location.protocol+"//"+window.location.hostname+k,p=f,q=null;null!=f&&/\.svg$/i.test(b.getTitle())&&(q=this.createTemporaryGraph(this.editor.graph.getStylesheet()),
+document.body.appendChild(q.container),p=this.decodeNodeIntoGraph(p,q));b.setData(this.createFileData(f,q,b,l));null!=q&&q.container.parentNode.removeChild(q.container);var u=mxUtils.bind(this,function(){this.spinner.stop()}),d=mxUtils.bind(this,function(){u();var d=this.getCurrentFile();null==a&&null!=d&&(a=!d.isModified()&&null==d.getMode());var f=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(b);a&&b.addAllSavedStatus();null!=c&&this.sidebar.showEntries(c)}),l=mxUtils.bind(this,
 function(){a||null==d||!d.isModified()?f():this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=e&&e();null==a||a?l():(b.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(b.getData(),b.getTitle(),null==b.getMode())),null!=e&&e(),window.openWindow(k,null,l))});b.constructor==LocalFile?d():b.saveFile(b.getTitle(),!1,mxUtils.bind(this,function(){d()}),mxUtils.bind(this,
 function(a){u();this.handleError(a)}))}};
 App.prototype.loadFile=function(b,c,a,e,k){this.hideDialog();var f=mxUtils.bind(this,function(){if(null==b||0==b.length)this.editor.setStatus(""),this.fileLoaded(null);else if(this.spinner.spin(document.body,mxResources.get("loading")))if("L"==b.charAt(0))if(this.spinner.stop(),isLocalStorage)try{b=decodeURIComponent(b.substring(1));var f=localStorage.getItem(b);if(null!=f)this.fileLoaded(new StorageFile(this,f,b)),null!=e&&e();else throw{message:mxResources.get("fileNotFound")};}catch(g){this.handleError(g,
@@ -8422,14 +8431,14 @@ e,mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoading
 d=mxUtils.bind(this,function(){if("https://drive.google.com/uc?id="!=k.substring(0,31)||null==this.drive&&"function"!==typeof window.DriveClient)return!1;this.hideDialog();var a=mxUtils.bind(this,function(){this.spinner.stop();return null!=this.drive?(this.loadFile("G"+k.substring(31,k.lastIndexOf("&ex")),c,e),!0):!1});!a()&&this.spinner.spin(document.body,mxResources.get("loading"))&&this.addListener("clientLoaded",a);return!0});this.loadTemplate(k,mxUtils.bind(this,function(a){this.spinner.stop();
 if(null!=a&&0<a.length){var c=this.defaultFilename;if(null==urlParams.title&&"1"!=urlParams.notitle){var e=k,f=k.lastIndexOf("."),g=e.lastIndexOf("/");f>g&&0<g&&(e=e.substring(g+1,f),f=k.substring(f),this.useCanvasForExport||".png"!=f||(f=".xml"),".svg"===f||".xml"===f||".html"===f||".png"===f||".drawio"===f)&&(c=e+f)}a=new LocalFile(this,a,null!=urlParams.title?decodeURIComponent(urlParams.title):c,!0);a.getHash=function(){return b};this.fileLoaded(a)||d()}}),mxUtils.bind(this,function(){d()||(this.spinner.stop(),
 this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile")))}))}else f=null,"G"==b.charAt(0)?f=this.drive:"D"==b.charAt(0)?f=this.dropbox:"W"==b.charAt(0)?f=this.oneDrive:"H"==b.charAt(0)?f=this.gitHub:"T"==b.charAt(0)&&(f=this.trello),null==f?this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""})):(b=decodeURIComponent(b.substring(1)),
-f.getFile(b,mxUtils.bind(this,function(a){this.spinner.stop();this.fileLoaded(a);null!=e&&e()}),mxUtils.bind(this,function(a){null!=window.console&&null!=a&&console.log("error in loadFile:",b,a);this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash=a.getHash()}))})))}),l=this.getCurrentFile(),q=mxUtils.bind(this,function(){k||null==l||!l.isModified()?f():
-this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){null!=l&&(window.location.hash=l.getHash())}),f,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==b||0==b.length?q():null!=l&&l.isModified()&&!c?window.openWindow(this.getUrl()+"#"+b,null,q):q()};
+f.getFile(b,mxUtils.bind(this,function(a){this.spinner.stop();this.fileLoaded(a);null!=e&&e()}),mxUtils.bind(this,function(a){null!=window.console&&null!=a&&console.log("error in loadFile:",b,a);this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash=a.getHash()}))})))}),l=this.getCurrentFile(),p=mxUtils.bind(this,function(){k||null==l||!l.isModified()?f():
+this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){null!=l&&(window.location.hash=l.getHash())}),f,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==b||0==b.length?p():null!=l&&l.isModified()&&!c?window.openWindow(this.getUrl()+"#"+b,null,p):p()};
 App.prototype.getLibraryStorageHint=function(b){var c=b.getTitle();b.constructor!=LocalLibrary&&(c+="\n"+b.getHash());b.constructor==DriveLibrary?c+=" ("+mxResources.get("googleDrive")+")":b.constructor==GitHubLibrary?c+=" ("+mxResources.get("github")+")":b.constructor==TrelloLibrary?c+=" ("+mxResources.get("trello")+")":b.constructor==DropboxLibrary?c+=" ("+mxResources.get("dropbox")+")":b.constructor==OneDriveLibrary?c+=" ("+mxResources.get("oneDrive")+")":b.constructor==StorageLibrary?c+=" ("+
 mxResources.get("browser")+")":b.constructor==LocalLibrary&&(c+=" ("+mxResources.get("device")+")");return c};
-App.prototype.restoreLibraries=function(){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var b=mxUtils.bind(this,function(a,b){b||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=mxUtils.bind(this,function(a,c){var e=0,f=[],l=mxUtils.bind(this,function(){if(0==e){if(null!=a)for(var b=a.length-1;0<=b;b--)null!=f[b]&&this.loadLibrary(f[b]);null!=c&&c()}});if(null!=a)for(var q=0;q<a.length;q++){var p=encodeURIComponent(decodeURIComponent(a[q]));mxUtils.bind(this,
-function(a,c){if(null!=a&&0<a.length&&null==this.pendingLibraries[a]&&null==this.sidebar.palettes[a]){e++;var d=mxUtils.bind(this,function(b){delete this.pendingLibraries[a];f[c]=b;e--;l()}),k=mxUtils.bind(this,function(c){b(a,c);e--;l()});this.pendingLibraries[a]=!0;var q=a.substring(0,1);if("L"==q)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var b=decodeURIComponent(a.substring(1));this.getLocalData(b,mxUtils.bind(this,function(a){".scratchpad"==b&&
-null==a&&(a=this.emptyLibraryXml);null!=a?d(new StorageLibrary(this,a,b)):k()}))}catch(n){k()}}),0);else if("U"==q){var p=decodeURIComponent(a.substring(1));if(!this.isOffline()){q=p;this.isCorsEnabledForUrl(q)||(q="t="+(new Date).getTime(),q=PROXY_URL+"?url="+encodeURIComponent(p)+"&"+q);try{mxUtils.get(q,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{d(new UrlLibrary(this,a.getText(),p))}catch(n){k()}else k()}),function(){k()})}catch(B){k()}}}else{var u=null;"G"==q?
-null!=this.drive&&null!=this.drive.user&&(u=this.drive):"H"==q?null!=this.gitHub&&null!=this.gitHub.getUser()&&(u=this.gitHub):"T"==q?null!=this.trello&&this.trello.isAuthorized()&&(u=this.trello):"D"==q?null!=this.dropbox&&null!=this.dropbox.getUser()&&(u=this.dropbox):"W"==q&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(u=this.oneDrive);null!=u?u.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{d(a)}catch(n){k()}}),function(a){k()}):k(!0)}}})(p,q)}l()});c(mxSettings.getCustomLibraries(),
+App.prototype.restoreLibraries=function(){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var b=mxUtils.bind(this,function(a,b){b||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=mxUtils.bind(this,function(a,c){var e=0,f=[],l=mxUtils.bind(this,function(){if(0==e){if(null!=a)for(var b=a.length-1;0<=b;b--)null!=f[b]&&this.loadLibrary(f[b]);null!=c&&c()}});if(null!=a)for(var p=0;p<a.length;p++){var q=encodeURIComponent(decodeURIComponent(a[p]));mxUtils.bind(this,
+function(a,c){if(null!=a&&0<a.length&&null==this.pendingLibraries[a]&&null==this.sidebar.palettes[a]){e++;var d=mxUtils.bind(this,function(b){delete this.pendingLibraries[a];f[c]=b;e--;l()}),k=mxUtils.bind(this,function(c){b(a,c);e--;l()});this.pendingLibraries[a]=!0;var p=a.substring(0,1);if("L"==p)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var b=decodeURIComponent(a.substring(1));this.getLocalData(b,mxUtils.bind(this,function(a){".scratchpad"==b&&
+null==a&&(a=this.emptyLibraryXml);null!=a?d(new StorageLibrary(this,a,b)):k()}))}catch(n){k()}}),0);else if("U"==p){var q=decodeURIComponent(a.substring(1));if(!this.isOffline()){p=q;this.isCorsEnabledForUrl(p)||(p="t="+(new Date).getTime(),p=PROXY_URL+"?url="+encodeURIComponent(q)+"&"+p);try{mxUtils.get(p,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{d(new UrlLibrary(this,a.getText(),q))}catch(n){k()}else k()}),function(){k()})}catch(A){k()}}}else{var u=null;"G"==p?
+null!=this.drive&&null!=this.drive.user&&(u=this.drive):"H"==p?null!=this.gitHub&&null!=this.gitHub.getUser()&&(u=this.gitHub):"T"==p?null!=this.trello&&this.trello.isAuthorized()&&(u=this.trello):"D"==p?null!=this.dropbox&&null!=this.dropbox.getUser()&&(u=this.dropbox):"W"==p&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(u=this.oneDrive);null!=u?u.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{d(a)}catch(n){k()}}),function(a){k()}):k(!0)}}})(q,p)}l()});c(mxSettings.getCustomLibraries(),
 function(){c((urlParams.clibs||"").split(";"))})}};
 App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var b=this.getCurrentFile();null!=b&&b.constructor==DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.padding="0 10px 0 10px",this.shareButton.style.marginTop="-4px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight="28px",this.shareButton.style.minWidth=
 "0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),b=document.createElement("img"),b.setAttribute("src",this.shareImage),b.setAttribute("align","absmiddle"),b.style.marginRight="4px",b.style.marginTop="-3px",this.shareButton.appendChild(b),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton)):
@@ -8442,11 +8451,11 @@ mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),a,e):k==
 function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!0,f,e):k==App.MODE_TRELLO?null!=this.trello&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.trello.insertFile(c,e?this.base64ToBlob(b,a):b,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),!1,f):k==App.MODE_BROWSER&&(a=mxUtils.bind(this,function(){localStorage.setItem(c,b)}),null==localStorage.getItem(c)?
 a():this.confirm(mxResources.get("replaceIt",[c]),a))};
 App.prototype.descriptorChanged=function(){var b=this.getCurrentFile();if(null!=b){if(null!=this.fname){this.fnameWrapper.style.display="block";this.fname.innerHTML="";var c=null!=b.getTitle()?b.getTitle():this.defaultFilename;mxUtils.write(this.fname,c);this.fname.setAttribute("title",c+" - "+mxResources.get("rename"))}var c=this.editor.graph,a=b.isEditable()&&!b.invalidChecksum;c.isEnabled()&&!a&&c.reset();c.setEnabled(a);null==urlParams.rev&&(this.updateDocumentTitle(),b=b.getHash(),0<b.length?
-window.location.hash=b:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.format.refresh()};
+window.location.hash=b:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.editor.graph.isSelectionEmpty()&&this.format.refresh()};
 App.prototype.showAuthDialog=function(b,c,a,e){var k=this.spinner.pause();this.showDialog((new AuthDialog(this,b,c,mxUtils.bind(this,function(b){try{null!=a&&a(b,mxUtils.bind(this,function(){this.hideDialog();k()}))}catch(l){this.editor.setStatus(mxUtils.htmlEntities(l.message))}}))).container,300,c?180:140,!0,!0,mxUtils.bind(this,function(a){null!=e&&e();a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))};
-App.prototype.convertFile=function(b,c,a,e,k,f){var l=c;/\.svg$/i.test(l)||(l=l.substring(0,c.lastIndexOf("."))+e);var q=!1;null!=this.gitHub&&b.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(q=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var p=new XMLHttpRequest;p.open("GET",b,!0);q||(p.responseType="blob");p.onload=mxUtils.bind(this,function(){var a=null;q?(a=JSON.parse(p.responseText),a=this.base64ToBlob(a.content,
-"application/octet-stream")):a=new Blob([p.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){k(new LocalFile(this,a,l,!0))}),f,c)});p.send()}else{var u=mxUtils.bind(this,function(a){try{/\.png$/i.test(c)?(temp=this.extractGraphModelFromPng(a),null!=temp?k(new LocalFile(this,temp,l,!0)):k(new LocalFile(this,a,c,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,b)?this.parseFile(new Blob([a],{type:"application/octet-stream"}),
-mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?k(new LocalFile(this,a.responseText,l,!0)):null!=f&&f({message:mxResources.get("errorLoadingFile")}))}),c):k(new LocalFile(this,a,l,!0))}catch(g){null!=f&&f(g)}});a=/\.png$/i.test(c)||/\.jpe?g$/i.test(c)||null!=a&&"image/"==a.substring(0,6);q?mxUtils.get(b,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=k){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(c)?
+App.prototype.convertFile=function(b,c,a,e,k,f){var l=c;/\.svg$/i.test(l)||(l=l.substring(0,c.lastIndexOf("."))+e);var p=!1;null!=this.gitHub&&b.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(p=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var q=new XMLHttpRequest;q.open("GET",b,!0);p||(q.responseType="blob");q.onload=mxUtils.bind(this,function(){var a=null;p?(a=JSON.parse(q.responseText),a=this.base64ToBlob(a.content,
+"application/octet-stream")):a=new Blob([q.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){k(new LocalFile(this,a,l,!0))}),f,c)});q.send()}else{var u=mxUtils.bind(this,function(a){try{/\.png$/i.test(c)?(temp=this.extractGraphModelFromPng(a),null!=temp?k(new LocalFile(this,temp,l,!0)):k(new LocalFile(this,a,c,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,b)?this.parseFile(new Blob([a],{type:"application/octet-stream"}),
+mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?k(new LocalFile(this,a.responseText,l,!0)):null!=f&&f({message:mxResources.get("errorLoadingFile")}))}),c):k(new LocalFile(this,a,l,!0))}catch(g){null!=f&&f(g)}});a=/\.png$/i.test(c)||/\.jpe?g$/i.test(c)||null!=a&&"image/"==a.substring(0,6);p?mxUtils.get(b,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=k){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(c)?
 "data:image/png;base64,"+b:!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b));u(b)}}else null!=f&&f({code:App.ERROR_UNKNOWN})}),function(){null!=f&&f({code:App.ERROR_UNKNOWN})},!1,this.timeout,function(){null!=f&&f({code:App.ERROR_TIMEOUT,retry:fn})}):this.loadUrl(b,u,f,a)}};
 App.prototype.updateHeader=function(){if(null!=this.menubar){this.appIcon=document.createElement("a");this.appIcon.style.display="block";this.appIcon.style.position="absolute";this.appIcon.style.width="40px";this.appIcon.style.backgroundColor="#f18808";this.appIcon.style.height=this.menubarHeight+"px";mxEvent.disableContextMenu(this.appIcon);mxEvent.addListener(this.appIcon,"click",mxUtils.bind(this,function(a){this.appIconClicked(a)}));var b=mxClient.IS_SVG?"url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzA2LjE4NSAxMjAuMjk2IgogICB2aWV3Qm94PSIyNCAyNiA2OCA2OCIKICAgeT0iMHB4IgogICB4PSIwcHgiCiAgIHZlcnNpb249IjEuMSI+CiAgIAkgPGc+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNDEuMDYxIgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjkiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTUyOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNzUuMDc2IgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjgiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTAwOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGc+PHBhdGgKICAgICAgICAgZD0iTTUyLjc3Myw3Ny4wODRjMCwxLjk1NC0xLjU5OSwzLjU1My0zLjU1MywzLjU1M0gzNi45OTljLTEuOTU0LDAtMy41NTMtMS41OTktMy41NTMtMy41NTN2LTkuMzc5ICAgIGMwLTEuOTU0LDEuNTk5LTMuNTUzLDMuNTUzLTMuNTUzaDEyLjIyMmMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjc3LjA4NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnCiAgICAgICBpZD0iZzM0MTkiPjxwYXRoCiAgICAgICAgIGQ9Ik02Ny43NjIsNDguMDc0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINTEuOTg4Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M0g2NC4yMWMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjQ4LjA3NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnPjxwYXRoCiAgICAgICAgIGQ9Ik04Mi43NTIsNzcuMDg0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINjYuOTc3Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M2gxMi4yMjJjMS45NTQsMCwzLjU1MywxLjU5OSwzLjU1MywzLjU1M1Y3Ny4wODR6IgogICAgICAgICBmaWxsPSIjRkZGRkZGIiAvPjwvZz48L2c+PC9zdmc+)":
 "url('"+IMAGE_PATH+"/logo-white.png')";this.appIcon.style.backgroundImage=b;this.appIcon.style.backgroundPosition="center center";this.appIcon.style.backgroundRepeat="no-repeat";mxUtils.setPrefixedStyle(this.appIcon.style,"transition","all 125ms linear");mxEvent.addListener(this.appIcon,"mouseover",mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&(a=a.getMode(),a==App.MODE_GOOGLE?this.appIcon.style.backgroundImage="url("+IMAGE_PATH+"/google-drive-logo-white.svg)":a==App.MODE_DROPBOX?
@@ -8473,8 +8482,8 @@ else{var c=!1;this.userPanel.innerHTML="";a=document.createElement("img");a.setA
 '<table title="User ID: '+a.id+'" style="font-size:10pt;padding:20px 20px 10px 10px;"><tr><td valign="top">'+(null!=a.pictureUrl?'<img width="80" height="80" style="margin-right:10px;border-radius:50%;" src="'+a.pictureUrl+'"/>':'<img width="80" height="80" style="margin-right:4px;margin-top:2px;" src="'+this.defaultUserPicture+'"/>')+'</td><td valign="top" style="white-space:nowrap;'+(null!=a.pictureUrl?"padding-top:14px;":"")+'"><b>'+mxUtils.htmlEntities(a.displayName)+"</b><br><small>"+mxUtils.htmlEntities(a.email)+
 "</small><br><br><small>"+mxResources.get("googleDrive")+"</small></tr></table>",a=document.createElement("div"),a.style.textAlign="center",a.style.padding="12px",a.style.background="whiteSmoke",a.style.borderTop="1px solid #e0e0e0",a.style.whiteSpace="nowrap",a.appendChild(mxUtils.button(mxResources.get("signOut"),mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&a.constructor==DriveFile?this.confirm(mxResources.get("areYouSure"),mxUtils.bind(this,function(){this.spinner.spin(document.body,
 mxResources.get("signOut"));this.diagramContainer.style.display="none";this.formatContainer.style.display="none";this.hsplit.style.display="none";this.sidebarContainer.style.display="none";this.sidebarFooterContainer.style.display="none";null!=this.tabContainer&&(this.tabContainer.style.display="none");a.close();window.setTimeout(mxUtils.bind(this,function(){this.showDialog=function(){};window.location.hash="";this.drive.clearUserId();gapi.auth.signOut();window.location.reload()}),null!=a&&a.constructor==
-DriveFile?2E3:0)})):(this.drive.clearUserId(),this.drive.setUser(null),gapi.auth.signOut())}))),this.userPanel.appendChild(a)));a=mxUtils.bind(this,function(a,b,e,q){null!=a&&(c&&this.userPanel.appendChild(document.createElement("hr")),c=!0,this.userPanel.innerHTML+='<table style="font-size:10pt;padding:20px 20px 10px 10px;"><tr><td valign="top">'+(null!=b?'<img style="margin-right:10px;" src="'+b+'" width="40" height="40"/></td>':"")+'<td valign="middle" style="white-space:nowrap;"><b>'+mxUtils.htmlEntities(a.displayName)+
-"</b>"+(null!=a.email?'<br><font color="gray">'+mxUtils.htmlEntities(a.email)+"</font>":"")+(null!=q?"<br><br><small>"+mxUtils.htmlEntities(q)+"</small>":"")+"</td></tr></table>",a=document.createElement("div"),a.style.textAlign="center",a.style.padding="12px",a.style.background="whiteSmoke",a.style.borderTop="1px solid #e0e0e0",a.style.whiteSpace="nowrap",null!=e&&a.appendChild(mxUtils.button(mxResources.get("signOut"),e)),this.userPanel.appendChild(a))});null!=this.dropbox&&a(this.dropbox.getUser(),
+DriveFile?2E3:0)})):(this.drive.clearUserId(),this.drive.setUser(null),gapi.auth.signOut())}))),this.userPanel.appendChild(a)));a=mxUtils.bind(this,function(a,b,e,p){null!=a&&(c&&this.userPanel.appendChild(document.createElement("hr")),c=!0,this.userPanel.innerHTML+='<table style="font-size:10pt;padding:20px 20px 10px 10px;"><tr><td valign="top">'+(null!=b?'<img style="margin-right:10px;" src="'+b+'" width="40" height="40"/></td>':"")+'<td valign="middle" style="white-space:nowrap;"><b>'+mxUtils.htmlEntities(a.displayName)+
+"</b>"+(null!=a.email?'<br><font color="gray">'+mxUtils.htmlEntities(a.email)+"</font>":"")+(null!=p?"<br><br><small>"+mxUtils.htmlEntities(p)+"</small>":"")+"</td></tr></table>",a=document.createElement("div"),a.style.textAlign="center",a.style.padding="12px",a.style.background="whiteSmoke",a.style.borderTop="1px solid #e0e0e0",a.style.whiteSpace="nowrap",null!=e&&a.appendChild(mxUtils.button(mxResources.get("signOut"),e)),this.userPanel.appendChild(a))});null!=this.dropbox&&a(this.dropbox.getUser(),
 IMAGE_PATH+"/dropbox-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==DropboxFile){var b=mxUtils.bind(this,function(){this.dropbox.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.dropbox.logout()}),mxResources.get("dropbox"));null!=this.oneDrive&&a(this.oneDrive.getUser(),IMAGE_PATH+"/onedrive-logo.svg",mxUtils.bind(this,function(){var a=
 this.getCurrentFile();if(null!=a&&a.constructor==OneDriveFile){var b=mxUtils.bind(this,function(){this.oneDrive.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.oneDrive.logout()}),mxResources.get("oneDrive"));null!=this.gitHub&&a(this.gitHub.getUser(),IMAGE_PATH+"/github-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==GitHubFile){var b=
 mxUtils.bind(this,function(){this.gitHub.logout();window.location.hash=""});a.isModified()?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}else this.gitHub.logout()}),mxResources.get("github"));null!=this.trello&&a(this.trello.getUser(),IMAGE_PATH+"/trello-logo.svg",mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.constructor==TrelloFile){var b=mxUtils.bind(this,function(){this.trello.logout();window.location.hash=
@@ -8482,10 +8491,10 @@ mxUtils.bind(this,function(){this.gitHub.logout();window.location.hash=""});a.is
 null==this.userPanel||null==this.userPanel.parentNode||this.userPanel.parentNode.removeChild(this.userPanel)})));var b=null;null!=this.drive&&null!=this.drive.getUser()?b=this.drive.getUser():null!=this.oneDrive&&null!=this.oneDrive.getUser()?b=this.oneDrive.getUser():null!=this.dropbox&&null!=this.dropbox.getUser()?b=this.dropbox.getUser():null!=this.gitHub&&null!=this.gitHub.getUser()&&(b=this.gitHub.getUser());null!=b?(this.userElement.innerHTML="",560<screen.width&&(mxUtils.write(this.userElement,
 b.displayName),this.userElement.style.display="block")):this.userElement.style.display="none"}else null!=this.userElement&&(this.userElement.parentNode.removeChild(this.userElement),this.userElement=null)};var editorResetGraph=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){editorResetGraph.apply(this,arguments);this.graph.pageFormat=mxSettings.getPageFormat()};(function(){var b=mxPopupMenu.prototype.showMenu;mxPopupMenu.prototype.showMenu=function(){b.apply(this,arguments);this.div.style.overflowY="auto";this.div.style.overflowX="hidden";this.div.style.maxHeight=Math.max(document.body.clientHeight,document.documentElement.clientHeight)-10+"px"};Menus.prototype.createHelpLink=function(a){var b=document.createElement("span");b.setAttribute("title",mxResources.get("help"));b.style.cssText="color:blue;text-decoration:underline;margin-left:8px;cursor:help;";
 var c=document.createElement("img");mxUtils.setOpacity(c,50);c.style.height="16px";c.style.width="16px";c.setAttribute("border","0");c.setAttribute("valign","bottom");c.setAttribute("src",Editor.helpImage);b.appendChild(c);mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){null!=this.editorUi.menubar&&this.editorUi.menubar.hideMenu();this.editorUi.openLink(a);mxEvent.consume(b)}));return b};Menus.prototype.addLinkToItem=function(a,b){null!=a&&a.firstChild.nextSibling.appendChild(this.createHelpLink(b))};
-var c=Menus.prototype.init;Menus.prototype.init=function(){c.apply(this,arguments);var a=this.editorUi,b=a.editor.graph,k=mxUtils.bind(b,b.isEnabled),f=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),l=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode),q=("www.draw.io"==
-window.location.hostname||"test.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"legacy.draw.io"==window.location.hostname)&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode),p=("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==urlParams.tr)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode);
+var c=Menus.prototype.init;Menus.prototype.init=function(){c.apply(this,arguments);var a=this.editorUi,b=a.editor.graph,k=mxUtils.bind(b,b.isEnabled),f=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),l=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode),p=("www.draw.io"==
+window.location.hostname||"test.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"legacy.draw.io"==window.location.hostname)&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode),q=("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==urlParams.tr)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode);
 mxClient.IS_SVG||a.isOffline()||((new Image).src=IMAGE_PATH+"/help.png");a.actions.addAction("new...",function(){var b=a.isOffline(),c=new NewDialog(a,b);a.showDialog(c.container,b?350:620,b?70:440,!0,!0,function(b){b&&null==a.getCurrentFile()&&a.showSplash()});c.init()});a.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,
-function(b,c,d,e,f,g,k,l,m,q){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,e,f,g,k,!l,m,q)}),!0,null,"svg")}));a.actions.put("insertTemplate",new Action(mxResources.get("template")+"...",function(){var c=new NewDialog(a,null,!1,function(c){a.hideDialog();null!=c&&(b.setSelectionCells(a.importXml(c,20,20,!0)),b.scrollCellToVisible(b.getSelectionCell()))},null,null,null,null,null,null,null,null,null,null,!1,mxResources.get("insert"));a.showDialog(c.container,620,440,!0,!0)}));a.actions.put("exportXml",
+function(b,c,d,e,f,g,k,l,m,p){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,e,f,g,k,!l,m,p)}),!0,null,"svg")}));a.actions.put("insertTemplate",new Action(mxResources.get("template")+"...",function(){var c=new NewDialog(a,null,!1,function(c){a.hideDialog();null!=c&&(b.setSelectionCells(a.importXml(c,20,20,!0)),b.scrollCellToVisible(b.getSelectionCell()))},null,null,null,null,null,null,null,null,null,null,!1,mxResources.get("insert"));a.showDialog(c.container,620,440,!0,!0)}));a.actions.put("exportXml",
 new Action(mxResources.get("formatXml")+"...",function(){var c=document.createElement("div");c.style.whiteSpace="nowrap";var d=null==a.pages||1>=a.pages.length,e=document.createElement("h3");mxUtils.write(e,mxResources.get("formatXml"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(e);var f=a.addCheckbox(c,mxResources.get("selectionOnly"),!1,b.isSelectionEmpty()),g=a.addCheckbox(c,mxResources.get(d?"compressed":"allPages"),!0);g.style.marginBottom="16px";
 mxEvent.addListener(f,"change",function(){f.checked?g.setAttribute("disabled","disabled"):g.removeAttribute("disabled")});c=new CustomDialog(a,c,mxUtils.bind(this,function(){a.downloadFile("xml",d?!g.checked:null,null,!f.checked,d?null:!g.checked)}),null,mxResources.get("export"));a.showDialog(c.container,300,146,!0,!0)}));a.actions.put("exportUrl",new Action(mxResources.get("url")+"...",function(){a.showPublishLinkDialog(mxResources.get("url"),!0,null,null,function(b,c,d,e,f,g){b=new EmbedDialog(a,
 a.createLink(b,c,d,e,f,g,null,!0));a.showDialog(b.container,440,240,!0,!0);b.init()})}));a.actions.put("exportHtml",new Action(mxResources.get("formatHtmlEmbedded")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("export"),null,b,function(b,c,d,e,f,g,n,k,l,m){a.createHtml(b,c,d,e,f,g,n,k,l,m,mxUtils.bind(this,function(b,c){var d=a.getBaseFilename(n),e='\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n<!DOCTYPE html>\n<html>\n<head>\n<title>'+
@@ -8543,8 +8552,8 @@ a.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["expo
 this.addMenuItem(b,"export",c).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(c,d){function e(b){b.pickFile(function(c){a.spinner.spin(document.body,mxResources.get("loading"))&&b.getFile(c,function(b){var c=k(b.getTitle());/\.svg$/i.test(b.getTitle())&&!a.editor.isDataSvg(b.getData())&&(b.setData(a.createSvgDataUri(b.getData())),c="image/svg+xml");g(b.getData(),c,b.getTitle())},function(b){a.handleError(b,null!=b?
 mxResources.get("errorLoadingFile"):null)},b==a.drive)},!0)}var g=mxUtils.bind(this,function(c,d,e){var f=b.view,g=b.getGraphBounds(),k=b.snap(Math.ceil(Math.max(0,g.x/f.scale-f.translate.x)+4*b.gridSize)),n=b.snap(Math.ceil(Math.max(0,(g.y+g.height)/f.scale-f.translate.y)+4*b.gridSize));"data:image/"==c.substring(0,11)?a.loadImage(c,mxUtils.bind(this,function(f){var g=!0,l=mxUtils.bind(this,function(){a.resizeImage(f,c,mxUtils.bind(this,function(f,l,m){f=g?Math.min(1,Math.min(a.maxImageSize/l,a.maxImageSize/
 m)):1;a.importFile(c,d,k,n,Math.round(l*f),Math.round(m*f),e,function(c){a.spinner.stop();b.setSelectionCells(c);b.scrollCellToVisible(b.getSelectionCell())})}),g)});c.length>a.resampleThreshold?a.confirmImageResize(function(a){g=a;l()}):l()}),mxUtils.bind(this,function(){a.handleError({message:mxResources.get("cannotOpenFile")})})):a.importFile(c,d,k,n,0,0,e,function(c){a.spinner.stop();b.setSelectionCells(c);b.scrollCellToVisible(b.getSelectionCell())})}),k=mxUtils.bind(this,function(a){var b="text/xml";
-/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)&&(b="image/gif");return b});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?c.addItem(mxResources.get("googleDrive")+"...",null,function(){e(a.drive)},d):f&&c.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=a.oneDrive?c.addItem(mxResources.get("oneDrive")+"...",null,function(){e(a.oneDrive)},d):q&&c.addItem(mxResources.get("oneDrive")+
-" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=a.dropbox?c.addItem(mxResources.get("dropbox")+"...",null,function(){e(a.dropbox)},d):l&&c.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=a.gitHub&&c.addItem(mxResources.get("github")+"...",null,function(){e(a.gitHub)},d);null!=a.trello?c.addItem(mxResources.get("trello")+"...",null,function(){e(a.trello)},d):p&&c.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+
+/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)&&(b="image/gif");return b});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?c.addItem(mxResources.get("googleDrive")+"...",null,function(){e(a.drive)},d):f&&c.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=a.oneDrive?c.addItem(mxResources.get("oneDrive")+"...",null,function(){e(a.oneDrive)},d):p&&c.addItem(mxResources.get("oneDrive")+
+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=a.dropbox?c.addItem(mxResources.get("dropbox")+"...",null,function(){e(a.dropbox)},d):l&&c.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=a.gitHub&&c.addItem(mxResources.get("github")+"...",null,function(){e(a.gitHub)},d);null!=a.trello?c.addItem(mxResources.get("trello")+"...",null,function(){e(a.trello)},d):q&&c.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+
 "...)",null,function(){},d,null,!1);c.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&c.addItem(mxResources.get("browser")+"...",null,function(){a.importLocalFile(!1)},d);c.addItem(mxResources.get("device")+"...",null,function(){a.importLocalFile(!0)},d);a.isOffline()||(c.addSeparator(d),c.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("import"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c=
 /(\.png)($|\?)/i.test(b)?"image/png":"text/xml";a.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(a){g(a,c,b)},function(){a.spinner.stop();a.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==c)}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},d))}))).isEnabled=k;this.put("theme",new Menu(mxUtils.bind(this,function(b,c){var d=mxSettings.getUi(),e=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},
 c);"kennedy"!=d&&"atlas"!=d&&"dark"!=d&&"min"!=d&&b.addCheckmark(e,Editor.checkmarkImage);b.addSeparator(c);e=b.addItem(mxResources.get("kennedy"),null,function(){mxSettings.setUi("kennedy");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"==d&&b.addCheckmark(e,Editor.checkmarkImage);e=b.addItem(mxResources.get("minimal"),null,function(){mxSettings.setUi("min");mxSettings.save();a.alert(mxResources.get("restartForChangeRequired"))},c);"min"==d&&b.addCheckmark(e,
@@ -8557,19 +8566,19 @@ b.move(c,mxUtils.bind(this,function(b){a.spinner.stop()}),mxUtils.bind(this,func
 mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();null!=a&&this.editorUi.drive.showPermissions(a.getId())}));this.put("embed",new Menu(mxUtils.bind(this,function(b,c){"1"==urlParams.test&&this.addMenuItems(b,["liveImage","-"],c);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||a.isOffline()||this.addMenuItems(b,["embedIframe"],c);"1"==urlParams.embed||a.isOffline()||this.addMenuItems(b,["-","googleDocs","googleSlides"],c)})));var t=function(b,
 c,d,e){("plantUml"!=e||EditorUi.enablePlantUml&&!a.isOffline())&&b.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==e||"formatSql"==e||"plantUml"==e){var b=new ParseDialog(a,d,e);a.showDialog(b.container,620,420,!0,!1);a.dialog.container.style.overflow="auto"}else b=new CreateGraphDialog(a,d,e),a.showDialog(b.container,620,420,!0,!1);b.init()}),c)},y=function(a,c,d,e){var f=b.isMouseInsertPoint()?b.getInsertPoint():b.getFreeInsertPoint();a=new mxCell(a,new mxGeometry(f.x,f.y,c,d),e);a.vertex=
 !0;b.getModel().beginUpdate();try{a=b.addCell(a),b.fireEvent(new mxEventObject("cellsInserted","cells",[a]))}finally{b.getModel().endUpdate()}b.scrollCellToVisible(a);b.setSelectionCell(a);b.container.focus();b.editAfterInsert&&b.startEditing(a);return a};a.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){a.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(b,c,d,
-e,f,g,k,l,m,q){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,e,f,g,k,!l,m,q)}),!0,null,"svg")}));a.actions.put("insertText",new Action(mxResources.get("text"),function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&b.startEditingAtCell(y("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=k;a.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),
+e,f,g,k,l,m,p){b=parseInt(b);!isNaN(b)&&0<b&&a.exportSvg(b/100,c,d,e,f,g,k,!l,m,p)}),!0,null,"svg")}));a.actions.put("insertText",new Action(mxResources.get("text"),function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&b.startEditingAtCell(y("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=k;a.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),
 function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&y("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=k;a.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&y("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=k;a.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&
-y("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=k;var B=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):t(a,b,mxResources.get(c[d])+"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);a.insertTemplateEnabled&&!a.isOffline()&&this.addMenuItems(b,["insertTemplate","-"],c);this.addSubmenu("insertLayout",b,c,mxResources.get("layout"));
-b.addSeparator(c);B(b,c,["fromText","plantUml","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){a.showImportCsvDialog()},c)})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){B(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("openRecent",new Menu(function(b,c){var d=a.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e==App.MODE_ONEDRIVE&&
+y("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=k;var A=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):t(a,b,mxResources.get(c[d])+"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - insertImage".split(" "),c);a.insertTemplateEnabled&&!a.isOffline()&&this.addMenuItems(b,["insertTemplate","-"],c);this.addSubmenu("insertLayout",b,c,mxResources.get("layout"));
+b.addSeparator(c);A(b,c,["fromText","plantUml","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){a.showImportCsvDialog()},c)})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){A(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("openRecent",new Menu(function(b,c){var d=a.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e==App.MODE_ONEDRIVE&&
 (e="oneDrive");b.addItem(d.title+" ("+mxResources.get(e)+")",null,function(){a.loadFile(d.id)},c)})(d[e]);b.addSeparator(c)}b.addItem(mxResources.get("reset"),null,function(){a.resetRecent()},c)}));this.put("openFrom",new Menu(function(b,c){null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickFile(App.MODE_GOOGLE)},c):f&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+
-"...",null,function(){a.pickFile(App.MODE_ONEDRIVE)},c):q&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickFile(App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickFile(App.MODE_GITHUB)},c);null!=a.trello?
-b.addItem(mxResources.get("trello")+"...",null,function(){a.pickFile(App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickFile(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickFile(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+
+"...",null,function(){a.pickFile(App.MODE_ONEDRIVE)},c):p&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickFile(App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickFile(App.MODE_GITHUB)},c);null!=a.trello?
+b.addItem(mxResources.get("trello")+"...",null,function(){a.pickFile(App.MODE_TRELLO)},c):q&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickFile(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickFile(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+
 "...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==a.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(b,c){"undefined"!=typeof google&&
-"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},c):f&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):q&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",
+"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},c):f&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):p&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",
 null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.showLibraryDialog(null,
-null,null,null,App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(b,c){"undefined"!=
-typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickLibrary(App.MODE_GOOGLE)},c):f&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickLibrary(App.MODE_ONEDRIVE)},c):q&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=
-a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickLibrary(App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickLibrary(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickLibrary(App.MODE_TRELLO)},c):p&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+
+null,null,null,App.MODE_TRELLO)},c):q&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(b,c){"undefined"!=
+typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickLibrary(App.MODE_GOOGLE)},c):f&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickLibrary(App.MODE_ONEDRIVE)},c):p&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=
+a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickLibrary(App.MODE_DROPBOX)},c):l&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickLibrary(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickLibrary(App.MODE_TRELLO)},c):q&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+
 "...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickLibrary(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickLibrary(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c=
 b;a.isCorsEnabledForUrl(b)||(c=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){a.spinner.stop();try{a.loadLibrary(new UrlLibrary(this,c.getText(),b))}catch(G){a.handleError(G,mxResources.get("errorLoadingFile"))}}else a.spinner.stop(),a.handleError(null,mxResources.get("errorLoadingFile"))},function(){a.spinner.stop();a.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,
 !0);b.init()},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("view",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","-"]));this.addMenuItems(b,["-","search"],
@@ -8618,9 +8627,9 @@ EditorUi.prototype.createTabContainer=function(){var b=document.createElement("d
 EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var b=this.editor.graph,c=document.createElement("div");c.style.position="relative";c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";c.style.verticalAlign="top";c.style.height=this.tabContainer.style.height;c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.fontSize="12px";c.style.marginLeft="30px";for(var a=this.editor.isChromelessView()?29:59,e=Math.min(140,Math.max(20,(this.tabContainer.clientWidth-
 a)/this.pages.length)+1),k=null,f=0;f<this.pages.length;f++)mxUtils.bind(this,function(a,d){this.pages[a]==this.currentPage?(d.className="geActivePage",d.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#eeeeee",d.style.fontWeight="bold",d.style.borderTopStyle="none"):d.className="geInactivePage";d.setAttribute("draggable","true");mxEvent.addListener(d,"dragstart",mxUtils.bind(this,function(c){b.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),k=a):mxEvent.consume(c)}));mxEvent.addListener(d,
 "dragend",mxUtils.bind(this,function(a){k=null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null!=k&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=k&&a!=k&&this.movePage(k,a);b.stopPropagation();b.preventDefault()}));c.appendChild(d)})(f,this.createTabForPage(this.pages[f],e,this.pages[f]!=this.currentPage));this.tabContainer.innerHTML="";this.tabContainer.appendChild(c);
-e=this.createPageMenuTab();this.tabContainer.appendChild(e);e=null;this.isPageInsertTabVisible()&&(e=this.createPageInsertTab(),this.tabContainer.appendChild(e));if(c.clientWidth>this.tabContainer.clientWidth-a){null!=e&&(e.style.position="absolute",e.style.right="0px",c.style.marginRight="30px");var l=this.createControlTab(4,"&nbsp;&#10094;&nbsp;");l.style.position="absolute";l.style.right=this.editor.chromeless?"29px":"55px";l.style.fontSize="13pt";this.tabContainer.appendChild(l);var q=this.createControlTab(4,
-"&nbsp;&#10095;");q.style.position="absolute";q.style.right=this.editor.chromeless?"0px":"29px";q.style.fontSize="13pt";this.tabContainer.appendChild(q);var p=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=p+"px";mxEvent.addListener(l,"click",mxUtils.bind(this,function(a){c.scrollLeft-=Math.max(20,p-20);mxUtils.setOpacity(l,0<c.scrollLeft?100:50);mxUtils.setOpacity(q,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(l,
-0<c.scrollLeft?100:50);mxUtils.setOpacity(q,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(q,"click",mxUtils.bind(this,function(a){c.scrollLeft+=Math.max(20,p-20);mxUtils.setOpacity(l,0<c.scrollLeft?100:50);mxUtils.setOpacity(q,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
+e=this.createPageMenuTab();this.tabContainer.appendChild(e);e=null;this.isPageInsertTabVisible()&&(e=this.createPageInsertTab(),this.tabContainer.appendChild(e));if(c.clientWidth>this.tabContainer.clientWidth-a){null!=e&&(e.style.position="absolute",e.style.right="0px",c.style.marginRight="30px");var l=this.createControlTab(4,"&nbsp;&#10094;&nbsp;");l.style.position="absolute";l.style.right=this.editor.chromeless?"29px":"55px";l.style.fontSize="13pt";this.tabContainer.appendChild(l);var p=this.createControlTab(4,
+"&nbsp;&#10095;");p.style.position="absolute";p.style.right=this.editor.chromeless?"0px":"29px";p.style.fontSize="13pt";this.tabContainer.appendChild(p);var q=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));c.style.width=q+"px";mxEvent.addListener(l,"click",mxUtils.bind(this,function(a){c.scrollLeft-=Math.max(20,q-20);mxUtils.setOpacity(l,0<c.scrollLeft?100:50);mxUtils.setOpacity(p,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(l,
+0<c.scrollLeft?100:50);mxUtils.setOpacity(p,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.addListener(p,"click",mxUtils.bind(this,function(a){c.scrollLeft+=Math.max(20,q-20);mxUtils.setOpacity(l,0<c.scrollLeft?100:50);mxUtils.setOpacity(p,c.scrollLeft<c.scrollWidth-c.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
 EditorUi.prototype.createTab=function(b){var c=document.createElement("div");c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";c.style.whiteSpace="nowrap";c.style.boxSizing="border-box";c.style.position="relative";c.style.overflow="hidden";c.style.marginLeft="-1px";c.style.height=this.tabContainer.clientHeight+"px";c.style.padding="8px 4px 8px 4px";c.style.border="dark"==uiTheme?"1px solid #505759":"1px solid #c0c0c0";c.style.borderBottomStyle="solid";c.style.backgroundColor=this.tabContainer.style.backgroundColor;
 c.style.cursor="move";c.style.color="gray";b&&(mxEvent.addListener(c,"mouseenter",mxUtils.bind(this,function(a){this.editor.graph.isMouseDown||(c.style.backgroundColor="dark"==uiTheme?"black":"#d3d3d3",mxEvent.consume(a))})),mxEvent.addListener(c,"mouseleave",mxUtils.bind(this,function(a){c.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(a)})));return c};
 EditorUi.prototype.createControlTab=function(b,c){var a=this.createTab(!0);a.style.paddingTop=b+"px";a.style.cursor="pointer";a.style.width="30px";a.style.lineHeight="30px";a.innerHTML=c;null!=a.firstChild&&null!=a.firstChild.style&&mxUtils.setOpacity(a.firstChild,40);return a};
@@ -8630,37 +8639,37 @@ null,mxUtils.bind(this,function(){this.renamePage(e,e.getName())}),b),a.addSepar
 mxEvent.consume(b)}));return b};EditorUi.prototype.createPageInsertTab=function(){var b=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');b.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){this.insertPage();mxEvent.consume(b)}));return b};
 EditorUi.prototype.createTabForPage=function(b,c,a){a=this.createTab(a);var e=b.getName()||mxResources.get("untitled"),k=b.getId();a.setAttribute("title",e+(null!=k?" ("+k+")":""));mxUtils.write(a,e);a.style.maxWidth=c+"px";a.style.width=c+"px";this.addTabListeners(b,a);42<c&&(a.style.textOverflow="ellipsis");return a};
 EditorUi.prototype.addTabListeners=function(b,c){mxEvent.disableContextMenu(c);var a=this.editor.graph;mxEvent.addListener(c,"dblclick",mxUtils.bind(this,function(a){this.renamePage(b);mxEvent.consume(a)}));var e=!1,k=!1;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(c){e=null!=this.currentMenu;k=b==this.currentPage;a.isMouseDown||k||this.selectPage(b)}),null,mxUtils.bind(this,function(f){if(a.isEnabled()&&!a.isMouseDown&&(mxEvent.isTouchEvent(f)&&k||mxEvent.isPopupTrigger(f))){a.popupMenuHandler.hideMenu();
-this.hideCurrentMenu();if(!mxEvent.isTouchEvent(f)||!e){var l=new mxPopupMenu(this.createPageMenu(b));l.div.className+=" geMenubarMenu";l.smartSeparators=!0;l.showDisabled=!0;l.autoExpand=!0;l.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(l,arguments);this.resetCurrentMenu();l.destroy()});var q=mxEvent.getClientX(f),p=mxEvent.getClientY(f);l.popup(q,p,null,f);this.setCurrentMenu(l,c)}mxEvent.consume(f)}}))};
+this.hideCurrentMenu();if(!mxEvent.isTouchEvent(f)||!e){var l=new mxPopupMenu(this.createPageMenu(b));l.div.className+=" geMenubarMenu";l.smartSeparators=!0;l.showDisabled=!0;l.autoExpand=!0;l.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(l,arguments);this.resetCurrentMenu();l.destroy()});var p=mxEvent.getClientX(f),q=mxEvent.getClientY(f);l.popup(p,q,null,f);this.setCurrentMenu(l,c)}mxEvent.consume(f)}}))};
 EditorUi.prototype.createPageMenu=function(b,c){return mxUtils.bind(this,function(a,e){a.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,b)+1)}),e);a.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(b)}),e);a.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(b,c)}),e);a.addSeparator(e);a.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(b,
 mxResources.get("copyOf",[b.getName()]))}),e)})};(function(){var b=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(c){b.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var b=new mxObjectCodec(new MovePage,["ui"]);b.beforeDecode=function(b,a,e){e.ui=b.ui;return a};b.afterDecode=function(b,a,e){b=e.oldIndex;e.oldIndex=e.newIndex;e.newIndex=b;return e};mxCodecRegistry.register(b)})();
 (function(){var b=new mxObjectCodec(new RenamePage,["ui","page"]);b.beforeDecode=function(b,a,e){e.ui=b.ui;return a};b.afterDecode=function(b,a,e){b=e.previous;e.previous=e.name;e.name=b;return e};mxCodecRegistry.register(b)})();
 (function(){var b=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");b.afterEncode=function(a,b,k){k.setAttribute("relatedPage",b.relatedPage.getId());null==b.index&&(k.setAttribute("name",b.relatedPage.getName()),null!=b.relatedPage.viewState&&k.setAttribute("viewState",JSON.stringify(b.relatedPage.viewState,function(a,b){return 0>mxUtils.indexOf(c,
 a)?b:void 0})),null!=b.relatedPage.root&&a.encodeCell(b.relatedPage.root,k));return k};b.beforeDecode=function(a,b,c){c.ui=a.ui;c.relatedPage=c.ui.getPageById(b.getAttribute("relatedPage"));if(null==c.relatedPage){var e=b.ownerDocument.createElement("diagram");e.setAttribute("id",b.getAttribute("relatedPage"));e.setAttribute("name",b.getAttribute("name"));c.relatedPage=new DiagramPage(e);e=b.getAttribute("viewState");null!=e&&(c.relatedPage.viewState=JSON.parse(e),b.removeAttribute("viewState"));
 b=b.cloneNode(!0);e=b.firstChild;if(null!=e)for(c.relatedPage.root=a.decodeCell(e,!1),c=e.nextSibling,e.parentNode.removeChild(e),e=c;null!=e;){c=e.nextSibling;if(e.nodeType==mxConstants.NODETYPE_ELEMENT){var k=e.getAttribute("id");null==a.lookup(k)&&a.decodeCell(e)}e.parentNode.removeChild(e);e=c}}return b};b.afterDecode=function(a,b,c){c.index=c.previousIndex;return c};mxCodecRegistry.register(b)})();(function(){var b=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]=
-"selectDescendants";var c=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,b,e,q,p){b=null!=b?b:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var f=e.slice(),d=[],g=0;g<e.length;g++){var k=this.view.getState(e[g]),l=null!=k?k.style:this.getCellStyle(e[g]);"1"==mxUtils.getValue(l,"treeFolding","0")&&(this.traverse(e[g],!0,mxUtils.bind(this,function(a,b){null!=b&&d.push(b);a!=e[g]&&d.push(a);return a==e[g]||!this.model.isCollapsed(a)})),
+"selectDescendants";var c=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,b,e,p,q){b=null!=b?b:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var f=e.slice(),d=[],g=0;g<e.length;g++){var k=this.view.getState(e[g]),l=null!=k?k.style:this.getCellStyle(e[g]);"1"==mxUtils.getValue(l,"treeFolding","0")&&(this.traverse(e[g],!0,mxUtils.bind(this,function(a,b){null!=b&&d.push(b);a!=e[g]&&d.push(a);return a==e[g]||!this.model.isCollapsed(a)})),
 this.model.setCollapsed(e[g],a))}for(g=0;g<d.length;g++)this.model.setVisible(d[g],!a);e=f;e=c.apply(this,arguments)}finally{this.model.endUpdate()}return e};var a=EditorUi.prototype.init;EditorUi.prototype.init=function(){a.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function a(a){return y.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=y.getParent(a),b=t.view.getState(a),t.view.getState(a),b="tree"==(null!=
-b?b.style:t.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=y.getParent(a),b=t.view.getState(a),t.view.getState(a),b=null!=(null!=b?b.style:t.getCellStyle(a)).childLayout);return b}function q(a){a=t.view.getState(a);if(null!=a){var b=t.getIncomingEdges(a.cell);if(0<b.length&&(b=t.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==
-a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function p(a,b){b=null!=b?b:!0;t.model.beginUpdate();try{var c=t.model.getParent(a),d=t.getIncomingEdges(a),e=t.cloneCells([d[0],a]);t.model.setTerminal(e[0],t.model.getTerminal(d[0],!0),!0);var f=q(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-
-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;t.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=t.view.getState(a),l=t.view.scale;if(null!=k){var m=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*l:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*l;var n=t.getOutgoingEdges(t.model.getTerminal(d[0],!0));if(null!=n){for(var p=f==mxConstants.DIRECTION_SOUTH||
-f==mxConstants.DIRECTION_NORTH,u=g=d=0;u<n.length;u++){var y=t.model.getTerminal(n[u],!1);if(f==q(y)){var x=t.view.getState(y);y!=a&&null!=x&&(p&&b!=x.getCenterX()<k.getCenterX()||!p&&b!=x.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,x)&&(d=10+Math.max(d,(Math.min(m.x+m.width,x.x+x.width)-Math.max(m.x,x.x))/l),g=10+Math.max(g,(Math.min(m.y+m.height,x.y+x.height)-Math.max(m.y,x.y))/l))}}p?g=0:d=0;for(u=0;u<n.length;u++)if(y=t.model.getTerminal(n[u],!1),f==q(y)&&(x=t.view.getState(y),y!=a&&null!=
-x&&(p&&b!=x.getCenterX()<k.getCenterX()||!p&&b!=x.getCenterY()<k.getCenterY()))){var v=[];t.traverse(x.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});t.moveCells(v,(b?1:-1)*d,(b?1:-1)*g)}}}return t.addCells(e,c)}finally{t.model.endUpdate()}}function u(a){t.model.beginUpdate();try{var b=q(a),c=t.getIncomingEdges(a),d=t.cloneCells([c[0],a]);t.model.setTerminal(c[0],d[1],!1);t.model.setTerminal(d[0],d[1],!0);t.model.setTerminal(d[0],a,!1);var e=t.model.getParent(a),f=e.geometry,g=[];t.view.currentRoot!=
+b?b.style:t.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=y.getParent(a),b=t.view.getState(a),t.view.getState(a),b=null!=(null!=b?b.style:t.getCellStyle(a)).childLayout);return b}function p(a){a=t.view.getState(a);if(null!=a){var b=t.getIncomingEdges(a.cell);if(0<b.length&&(b=t.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==
+a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function q(a,b){b=null!=b?b:!0;t.model.beginUpdate();try{var c=t.model.getParent(a),d=t.getIncomingEdges(a),e=t.cloneCells([d[0],a]);t.model.setTerminal(e[0],t.model.getTerminal(d[0],!0),!0);var f=p(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-
+10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;t.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=t.view.getState(a),l=t.view.scale;if(null!=k){var m=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*l:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*l;var n=t.getOutgoingEdges(t.model.getTerminal(d[0],!0));if(null!=n){for(var q=f==mxConstants.DIRECTION_SOUTH||
+f==mxConstants.DIRECTION_NORTH,u=g=d=0;u<n.length;u++){var y=t.model.getTerminal(n[u],!1);if(f==p(y)){var x=t.view.getState(y);y!=a&&null!=x&&(q&&b!=x.getCenterX()<k.getCenterX()||!q&&b!=x.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,x)&&(d=10+Math.max(d,(Math.min(m.x+m.width,x.x+x.width)-Math.max(m.x,x.x))/l),g=10+Math.max(g,(Math.min(m.y+m.height,x.y+x.height)-Math.max(m.y,x.y))/l))}}q?g=0:d=0;for(u=0;u<n.length;u++)if(y=t.model.getTerminal(n[u],!1),f==p(y)&&(x=t.view.getState(y),y!=a&&null!=
+x&&(q&&b!=x.getCenterX()<k.getCenterX()||!q&&b!=x.getCenterY()<k.getCenterY()))){var v=[];t.traverse(x.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});t.moveCells(v,(b?1:-1)*d,(b?1:-1)*g)}}}return t.addCells(e,c)}finally{t.model.endUpdate()}}function u(a){t.model.beginUpdate();try{var b=p(a),c=t.getIncomingEdges(a),d=t.cloneCells([c[0],a]);t.model.setTerminal(c[0],d[1],!1);t.model.setTerminal(d[0],d[1],!0);t.model.setTerminal(d[0],a,!1);var e=t.model.getParent(a),f=e.geometry,g=[];t.view.currentRoot!=
 e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);t.traverse(a,!0,function(a,b){null!=b&&g.push(b);g.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-40):b==mxConstants.DIRECTION_WEST?(k=-40,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);t.moveCells(g,k,l);return t.addCells(d,e)}finally{t.model.endUpdate()}}function d(a){t.model.beginUpdate();try{var b=t.model.getParent(a),c=t.getIncomingEdges(a),d=t.cloneCells([c[0],
-a]);t.model.setTerminal(d[0],a,!0);var c=t.getOutgoingEdges(a),e=b.geometry,f=[];t.view.currentRoot==b&&(e=new mxRectangle);for(var g=0;g<c.length;g++){var k=t.model.getTerminal(c[g],!1);null!=k&&f.push(k)}var l=t.view.getBounds(f),m=q(a),n=t.view.translate,p=t.view.scale;m==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-n.x-e.x+10,d[1].geometry.y+=a.geometry.height-e.y+40):m==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=
-null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/p-n.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height-e.y+40):(d[1].geometry.x=m==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-e.x+40):d[1].geometry.x+(a.geometry.width-e.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/p-n.y+-e.y+10);return t.addCells(d,b)}finally{t.model.endUpdate()}}function g(a,b,c){a=t.getOutgoingEdges(a);c=t.view.getState(c);var d=
-[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=t.view.getState(t.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function m(a,b){var c=q(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?v.actions.get("selectParent").funct():
+a]);t.model.setTerminal(d[0],a,!0);var c=t.getOutgoingEdges(a),e=b.geometry,f=[];t.view.currentRoot==b&&(e=new mxRectangle);for(var g=0;g<c.length;g++){var k=t.model.getTerminal(c[g],!1);null!=k&&f.push(k)}var l=t.view.getBounds(f),m=p(a),n=t.view.translate,q=t.view.scale;m==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/q-n.x-e.x+10,d[1].geometry.y+=a.geometry.height-e.y+40):m==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=
+null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/q-n.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height-e.y+40):(d[1].geometry.x=m==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-e.x+40):d[1].geometry.x+(a.geometry.width-e.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/q-n.y+-e.y+10);return t.addCells(d,b)}finally{t.model.endUpdate()}}function g(a,b,c){a=t.getOutgoingEdges(a);c=t.view.getState(c);var d=
+[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=t.view.getState(t.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function m(a,b){var c=p(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?v.actions.get("selectParent").funct():
 c==b?(d=t.getOutgoingEdges(a),null!=d&&0<d.length&&t.setSelectionCell(t.model.getTerminal(d[0],!1))):(c=t.getIncomingEdges(a),null!=c&&0<c.length&&(d=g(t.model.getTerminal(c[0],!0),d,a),c=t.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&t.setSelectionCell(d[c].cell)))))}var v=this,t=v.editor.graph,y=t.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings");
-mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var B=v.menus.createPopupMenu;v.menus.createPopupMenu=function(b,c,d){B.apply(this,arguments);if(1==t.getSelectionCount()){c=t.getSelectionCell();var e=t.getOutgoingEdges(c);b.addSeparator();null!=e&&0<e.length&&(a(t.getSelectionCell())&&this.addMenuItems(b,["selectChildren"],null,d),this.addMenuItems(b,["selectDescendants"],null,d));a(t.getSelectionCell())&&(b.addSeparator(),0<t.getIncomingEdges(c).length&&
+mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var A=v.menus.createPopupMenu;v.menus.createPopupMenu=function(b,c,d){A.apply(this,arguments);if(1==t.getSelectionCount()){c=t.getSelectionCell();var e=t.getOutgoingEdges(c);b.addSeparator();null!=e&&0<e.length&&(a(t.getSelectionCell())&&this.addMenuItems(b,["selectChildren"],null,d),this.addMenuItems(b,["selectDescendants"],null,d));a(t.getSelectionCell())&&(b.addSeparator(),0<t.getIncomingEdges(c).length&&
 this.addMenuItems(b,["selectSiblings","selectParent"],null,d))}};v.actions.addAction("selectChildren",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(t.model.getTerminal(a[c],!1));t.setSelectionCells(b)}}},null,null,"Alt+Shift+X");v.actions.addAction("selectSiblings",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getIncomingEdges(a);if(null!=a&&0<a.length&&
 (a=t.getOutgoingEdges(t.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(t.model.getTerminal(a[c],!1));t.setSelectionCells(b)}}},null,null,"Alt+Shift+S");v.actions.addAction("selectParent",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=t.getSelectionCell(),a=t.getIncomingEdges(a);null!=a&&0<a.length&&t.setSelectionCell(t.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(){if(t.isEnabled()&&1==t.getSelectionCount()){var a=
 t.getSelectionCell(),b=[];t.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});t.setSelectionCells(b)}},null,null,"Alt+Shift+D");var n=t.removeCells;t.removeCells=function(b,d){d=null!=d?d:!0;null==b&&(b=this.getDeletableCells(this.getSelectionCells()));d&&(b=this.getDeletableCells(this.addAllEdges(b)));for(var e=[],f=0;f<b.length;f++){var g=b[f];y.isEdge(g)&&c(g)&&(e.push(g),g=y.getTerminal(g,!1));a(g)?(t.traverse(g,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),g=t.getIncomingEdges(b[f]),
 b=b.concat(g)):e.push(b[f])}b=e;return n.apply(this,arguments)};v.hoverIcons.getStateAt=function(b,c,d){return a(b.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var x=t.duplicateCells;t.duplicateCells=function(b,c){b=null!=b?b:this.getSelectionCells();for(var d=b.slice(0),e=0;e<d.length;e++){var f=t.view.getState(d[e]);if(null!=f&&a(f.cell))for(var g=t.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],b)}this.model.beginUpdate();try{var k=x.call(this,b,c);if(k.length==
-b.length)for(e=0;e<b.length;e++)if(a(b[e])){var l=t.getIncomingEdges(k[e]),g=t.getIncomingEdges(b[e]);if(0==l.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,t.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var z=t.moveCells;t.moveCells=function(b,c,d,e,f,g,k){var l=null;this.model.beginUpdate();try{var m=f,n=this.view.getState(f),q=null!=n?n.style:this.getCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(q,"treeFolding","0")){for(var p=
-0;p<b.length;p++)if(a(b[p])||t.model.isEdge(b[p])&&null==t.model.getTerminal(b[p],!0)){f=t.model.getParent(b[p]);break}if(null!=m&&f!=m&&null!=this.view.getState(b[0])){var u=t.getIncomingEdges(b[0]);if(0<u.length){var y=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=y){var x=t.view.getState(m);null!=x&&(c=(x.getCenterX()-y.getCenterX())/t.view.scale,d=(x.getCenterY()-y.getCenterY())/t.view.scale)}}}}l=z.apply(this,arguments);if(null!=l&&null!=b&&l.length==b.length)for(p=0;p<l.length;p++)if(this.model.isEdge(l[p]))a(m)&&
-0>mxUtils.indexOf(l,this.model.getTerminal(l[p],!0))&&this.model.setTerminal(l[p],m,!0);else if(a(b[p])&&(u=t.getIncomingEdges(b[p]),0<u.length))if(!e)a(m)&&0>mxUtils.indexOf(b,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],m,!0);else if(0==t.getIncomingEdges(l[p]).length){n=m;if(null==n||n==t.model.getParent(b[p]))n=t.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,t.getDefaultParent(),n,l[p])}}finally{this.model.endUpdate()}return l};if(null!=v.sidebar){var A=v.sidebar.dropAndConnect;
-v.sidebar.dropAndConnect=function(b,c,d,e){var f=t.model,g=null;f.beginUpdate();try{if(g=A.apply(this,arguments),a(b))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],b,!0);var l=t.getCellGeometry(g[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var F={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},E=
-v.onKeyDown;v.onKeyDown=function(b){try{if(t.isEnabled()&&!t.isEditing()&&a(t.getSelectionCell())&&1==t.getSelectionCount()){var c=null;0<t.getIncomingEdges(t.getSelectionCell()).length&&(9==b.which?c=mxEvent.isShiftDown(b)?u(t.getSelectionCell()):d(t.getSelectionCell()):13==b.which&&(c=p(t.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==c.length&&t.model.isEdge(c[0])?t.setSelectionCell(t.model.getTerminal(c[0],!1)):t.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(t.view.getState(t.getSelectionCell())),
+b.length)for(e=0;e<b.length;e++)if(a(b[e])){var l=t.getIncomingEdges(k[e]),g=t.getIncomingEdges(b[e]);if(0==l.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,t.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var z=t.moveCells;t.moveCells=function(b,c,d,e,f,g,k){var l=null;this.model.beginUpdate();try{var m=f,n=this.view.getState(f),p=null!=n?n.style:this.getCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=
+0;q<b.length;q++)if(a(b[q])||t.model.isEdge(b[q])&&null==t.model.getTerminal(b[q],!0)){f=t.model.getParent(b[q]);break}if(null!=m&&f!=m&&null!=this.view.getState(b[0])){var u=t.getIncomingEdges(b[0]);if(0<u.length){var y=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=y){var x=t.view.getState(m);null!=x&&(c=(x.getCenterX()-y.getCenterX())/t.view.scale,d=(x.getCenterY()-y.getCenterY())/t.view.scale)}}}}l=z.apply(this,arguments);if(null!=l&&null!=b&&l.length==b.length)for(q=0;q<l.length;q++)if(this.model.isEdge(l[q]))a(m)&&
+0>mxUtils.indexOf(l,this.model.getTerminal(l[q],!0))&&this.model.setTerminal(l[q],m,!0);else if(a(b[q])&&(u=t.getIncomingEdges(b[q]),0<u.length))if(!e)a(m)&&0>mxUtils.indexOf(b,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],m,!0);else if(0==t.getIncomingEdges(l[q]).length){n=m;if(null==n||n==t.model.getParent(b[q]))n=t.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,t.getDefaultParent(),n,l[q])}}finally{this.model.endUpdate()}return l};if(null!=v.sidebar){var B=v.sidebar.dropAndConnect;
+v.sidebar.dropAndConnect=function(b,c,d,e){var f=t.model,g=null;f.beginUpdate();try{if(g=B.apply(this,arguments),a(b))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],b,!0);var l=t.getCellGeometry(g[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var F={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},E=
+v.onKeyDown;v.onKeyDown=function(b){try{if(t.isEnabled()&&!t.isEditing()&&a(t.getSelectionCell())&&1==t.getSelectionCount()){var c=null;0<t.getIncomingEdges(t.getSelectionCell()).length&&(9==b.which?c=mxEvent.isShiftDown(b)?u(t.getSelectionCell()):d(t.getSelectionCell()):13==b.which&&(c=q(t.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==c.length&&t.model.isEdge(c[0])?t.setSelectionCell(t.model.getTerminal(c[0],!1)):t.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(t.view.getState(t.getSelectionCell())),
 t.startEditingAtCell(t.getSelectionCell()),mxEvent.consume(b);else if(mxEvent.isAltDown(b)&&mxEvent.isShiftDown(b)){var e=F[b.keyCode];null!=e&&(e.funct(b),mxEvent.consume(b))}else 37==b.keyCode?(m(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(b)):38==b.keyCode?(m(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(b)):39==b.keyCode?(m(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(b)):40==b.keyCode&&(m(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(b))}}catch(M){console.log("error",M)}mxEvent.isConsumed(b)||E.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(b,c,e,f,g,k){var l=t.getIncomingEdges(b);return a(b)&&0<l.length?(e=q(b),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,g=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(b):f==g?u(b):p(b,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):G.call(this,b,c,e,f,g,k)};t.getSubtree=function(b){var c=[b];a(b)&&
+mxEvent.consume(b))}}catch(M){console.log("error",M)}mxEvent.isConsumed(b)||E.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(b,c,e,f,g,k){var l=t.getIncomingEdges(b);return a(b)&&0<l.length?(e=p(b),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,g=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(b):f==g?u(b):q(b,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):G.call(this,b,c,e,f,g,k)};t.getSubtree=function(b){var c=[b];a(b)&&
 !e(b)&&t.traverse(b,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var H=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){H.apply(this,arguments);a(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(b),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width=
 "18px",this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells);
 this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var D=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){D.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 K=mxVertexHandler.prototype.destroy;
@@ -8691,8 +8700,8 @@ this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(
 mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').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="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<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.prototype.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=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!0;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="30px");f.apply(this,arguments)};var l=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){l.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var q=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(b,c){null!=c.shortcut&&900>a&&!mxClient.IS_IOS?b.firstChild.nextSibling.setAttribute("title",
-c.shortcut):q.apply(this,arguments)};var p=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){p.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height=
+function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="30px");f.apply(this,arguments)};var l=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){l.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var p=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(b,c){null!=c.shortcut&&900>a&&!mxClient.IS_IOS?b.firstChild.nextSibling.setAttribute("title",
+c.shortcut):p.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="display:inline-block;position:relative;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height=
 "24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"))}};var u=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){u.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition=
 "center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px"}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a=document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="1"==urlParams.saveAndExit?
 "geMenuItem":"geMenuItem gePrimaryBtn";b.style.fontSize="14px";b.style.padding="6px";b.style.borderRadius="3px";b.style.marginLeft="8px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem gePrimaryBtn",b.style.fontSize="14px",b.style.marginLeft=
@@ -8728,22 +8737,23 @@ e([d("",function(){l.popupMenuHandler.hideMenu();var a=l.view.scale,b=l.view.tra
 640<=a?d("",c.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",c,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="):
 null,640<=a?d("",f.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="):
 null],60)}c=k.menus.get("language");null!=c&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=a?(null==M&&(f=q.addMenu("",c.funct),f.setAttribute("title",mxResources.get("language")),f.className="geToolbarButton",f.style.backgroundImage="url("+Editor.globeImage+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.position="absolute",f.style.height="24px",f.style.width="24px",f.style.zIndex="1",f.style.top="11px",f.style.right=
-"8px",f.style.cursor="pointer",m.appendChild(f),M=f),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=M&&(M.parentNode.removeChild(M),M=null))}t.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);urlParams.clibs&&c(this);var k=this,l=k.editor.graph;
-k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var m=document.createElement("div");m.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var p=null,q=new Menubar(k,m);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position="relative";k.statusContainer.style.maxWidth="";k.statusContainer.style.marginTop=
-"7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var u=k.descriptorChanged;k.descriptorChanged=function(){u.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);m.setAttribute("title",
-a.getTitle()+(null!=b?" ("+b+")":""))}else m.removeAttribute("title")};k.setStatusText(k.editor.getStatus());m.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";m.appendChild(k.buttonContainer);k.menubarContainer=k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";
-var g=k.diagramContainer.parentNode,v=document.createElement("div");v.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var I=k.menus.get("viewZoom");if(null!=I){this.tabContainer.style.right="70px";var C=q.addMenu("100%",I.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center";
-C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility="hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray";
-C.style.height=parseInt(k.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(k.tabContainer.style.height)+1+"px";v.appendChild(C);I=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,I);k.editor.addListener("resetGraphView",I);k.editor.addListener("pageSelected",I);var J=k.setGraphEnabled;k.setGraphEnabled=function(){J.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility,
-this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}v.appendChild(k.tabContainer);v.appendChild(m);v.appendChild(k.diagramContainer);g.appendChild(v);k.updateTabContainer();var M=null;f();mxEvent.addListener(window,"resize",function(){f();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();
-null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();(function(){var b=mxGuide.prototype.move;mxGuide.prototype.move=function(a,c,f,l){var e=c.y,k=c.x,u=!1,d=!1;if(null!=this.states&&null!=a&&null!=c){var g=this,m=new mxCellState,v=this.graph.getView().scale,t=Math.max(2,this.getGuideTolerance()/2);m.x=a.x+k;m.y=a.y+e;m.width=a.width;m.height=a.height;for(var y=[],B=[],n=0;n<this.states.length;n++){var x=this.states[n];x instanceof mxCellState&&(l||!this.graph.isCellSelected(x.cell))&&((m.x>=x.x&&m.x<=x.x+x.width||x.x>=m.x&&x.x<=m.x+m.width)&&(m.y>
-x.y+x.height+4||m.y+m.height+4<x.y)?y.push(x):(m.y>=x.y&&m.y<=x.y+x.height||x.y>=m.y&&x.y<=m.y+m.height)&&(m.x>x.x+x.width+4||m.x+m.width+4<x.x)&&B.push(x))}var z=0,A=0,F=x=0,E=0,G=0,H=0,D=0,K=5*v;if(1<y.length){y.push(m);y.sort(function(a,b){return a.y-b.y});var I=!1,n=m==y[0],v=m==y[y.length-1];if(!n&&!v)for(n=1;n<y.length-1;n++)if(m==y[n]){v=y[n-1];n=y[n+1];x=A=F=(n.y-v.y-v.height-m.height)/2;break}for(n=0;n<y.length-1;n++){var v=y[n],C=y[n+1],J=m==v||m==C,C=C.y-v.y-v.height,I=I|m==v;if(0==A&&
-0==z)A=C,z=1;else if(Math.abs(A-C)<=(J||1==n&&I?t:0))z+=1;else if(1<z&&I){y=y.slice(0,n+1);break}else if(3<=y.length-n&&!I)z=0,x=A=0!=F?F:0,y.splice(0,0==n?1:n),n=-1;else break;0!=x||J||(A=x=C)}3==y.length&&y[1]==m&&(x=0)}if(1<B.length){B.push(m);B.sort(function(a,b){return a.x-b.x});I=!1;n=m==B[0];v=m==B[B.length-1];if(!n&&!v)for(n=1;n<B.length-1;n++)if(m==B[n]){v=B[n-1];n=B[n+1];H=G=D=(n.x-v.x-v.width-m.width)/2;break}for(n=0;n<B.length-1;n++){v=B[n];C=B[n+1];J=m==v||m==C;C=C.x-v.x-v.width;I|=m==
-v;if(0==G&&0==E)G=C,E=1;else if(Math.abs(G-C)<=(J||1==n&&I?t:0))E+=1;else if(1<E&&I){B=B.slice(0,n+1);break}else if(3<=B.length-n&&!I)E=0,H=G=0!=D?D:0,B.splice(0,0==n?1:n),n=-1;else break;0!=H||J||(G=H=C)}3==B.length&&B[1]==m&&(H=0)}t=function(a,b,c,d){var e=[],f;d?(d=K,f=0):(d=0,f=K);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR,
-mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(g.graph.getView().getOverlayPane());return a};G=function(a,b){if(a&&null!=g.guidesArrHor)for(var c=0;c<g.guidesArrHor.length;c++)g.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=g.guidesArrVer)for(c=0;c<g.guidesArrVer.length;c++)g.guidesArrVer[c].node.style.visibility="hidden"};if(1<E&&E==B.length-1){E=[];D=g.guidesArrHor;u=[];k=0;n=B[0]==m?1:0;I=B[n].y+B[n].height;if(0<H)for(n=0;n<B.length-1;n++)v=
-B[n],C=B[n+1],m==v?(k=C.x-v.width-H,u.push(new mxPoint(k+v.width+K,I)),u.push(new mxPoint(C.x-K,I))):m==C?(u.push(new mxPoint(v.x+v.width+K,I)),k=v.x+v.width+H,u.push(new mxPoint(k-K,I))):(u.push(new mxPoint(v.x+v.width+K,I)),u.push(new mxPoint(C.x-K,I)));else v=B[0],n=B[2],k=v.x+v.width+(n.x-v.x-v.width-m.width)/2,u.push(new mxPoint(v.x+v.width+K,I)),u.push(new mxPoint(k-K,I)),u.push(new mxPoint(k+m.width+K,I)),u.push(new mxPoint(n.x-K,I));for(n=0;n<u.length;n+=2)B=u[n],H=u[n+1],B=t(B,H,null!=D?
-D[n/2]:null),B.node.style.visibility="visible",B.redraw(),E.push(B);for(n=u.length/2;null!=D&&n<D.length;n++)D[n].destroy();g.guidesArrHor=E;k-=a.x;u=!0}else G(!0);if(1<z&&z==y.length-1){E=[];D=g.guidesArrVer;d=[];e=0;n=y[0]==m?1:0;z=y[n].x+y[n].width;if(0<x)for(n=0;n<y.length-1;n++)v=y[n],C=y[n+1],m==v?(e=C.y-v.height-x,d.push(new mxPoint(z,e+v.height+K)),d.push(new mxPoint(z,C.y-K))):m==C?(d.push(new mxPoint(z,v.y+v.height+K)),e=v.y+v.height+x,d.push(new mxPoint(z,e-K))):(d.push(new mxPoint(z,v.y+
-v.height+K)),d.push(new mxPoint(z,C.y-K)));else v=y[0],n=y[2],e=v.y+v.height+(n.y-v.y-v.height-m.height)/2,d.push(new mxPoint(z,v.y+v.height+K)),d.push(new mxPoint(z,e-K)),d.push(new mxPoint(z,e+m.height+K)),d.push(new mxPoint(z,n.y-K));for(n=0;n<d.length;n+=2)B=d[n],H=d[n+1],B=t(B,H,null!=D?D[n/2]:null,!0),B.node.style.visibility="visible",B.redraw(),E.push(B);for(n=d.length/2;null!=D&&n<D.length;n++)D[n].destroy();g.guidesArrVer=E;e-=a.y;d=!0}else G(!1,!0)}if(u||d)return m=new mxPoint(k,e),y=b.call(this,
+"8px",f.style.cursor="pointer",m.appendChild(f),M=f),k.buttonContainer.style.paddingRight="34px"):(k.buttonContainer.style.paddingRight="4px",null!=M&&(M.parentNode.removeChild(M),M=null))}t.apply(this,arguments);var g=document.createElement("div");g.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";g.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(g);null==urlParams.clibs&&null==urlParams.libs||
+c(this);var k=this,l=k.editor.graph;k.toolbar=this.createToolbar(k.createDiv("geToolbar"));k.defaultLibraryName=mxResources.get("untitledLibrary");var m=document.createElement("div");m.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var p=null,q=new Menubar(k,m);k.statusContainer=k.createStatusContainer();k.statusContainer.style.position="relative";k.statusContainer.style.maxWidth=
+"";k.statusContainer.style.marginTop="7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var u=k.descriptorChanged;k.descriptorChanged=function(){u.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");
+b=mxResources.get(b);m.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else m.removeAttribute("title")};k.setStatusText(k.editor.getStatus());m.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";m.appendChild(k.buttonContainer);k.menubarContainer=k.buttonContainer;k.tabContainer=document.createElement("div");k.tabContainer.style.cssText=
+"position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var g=k.diagramContainer.parentNode,v=document.createElement("div");v.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var I=k.menus.get("viewZoom");if(null!=I){this.tabContainer.style.right="70px";var C=q.addMenu("100%",
+I.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center";C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility=
+"hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray";C.style.height=parseInt(k.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(k.tabContainer.style.height)+1+"px";v.appendChild(C);I=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,I);k.editor.addListener("resetGraphView",
+I);k.editor.addListener("pageSelected",I);var J=k.setGraphEnabled;k.setGraphEnabled=function(){J.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}v.appendChild(k.tabContainer);v.appendChild(m);v.appendChild(k.diagramContainer);g.appendChild(v);k.updateTabContainer();var M=null;f();mxEvent.addListener(window,"resize",function(){f();null!=k.sidebarWindow&&
+k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};
+(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();(function(){var b=mxGuide.prototype.move;mxGuide.prototype.move=function(a,c,f,l){var e=c.y,k=c.x,u=!1,d=!1;if(null!=this.states&&null!=a&&null!=c){var g=this,m=new mxCellState,v=this.graph.getView().scale,t=Math.max(2,this.getGuideTolerance()/2);m.x=a.x+k;m.y=a.y+e;m.width=a.width;m.height=a.height;for(var y=[],A=[],n=0;n<this.states.length;n++){var x=this.states[n];x instanceof mxCellState&&(l||!this.graph.isCellSelected(x.cell))&&((m.x>=x.x&&m.x<=x.x+x.width||x.x>=m.x&&x.x<=m.x+m.width)&&(m.y>
+x.y+x.height+4||m.y+m.height+4<x.y)?y.push(x):(m.y>=x.y&&m.y<=x.y+x.height||x.y>=m.y&&x.y<=m.y+m.height)&&(m.x>x.x+x.width+4||m.x+m.width+4<x.x)&&A.push(x))}var z=0,B=0,F=x=0,E=0,G=0,H=0,D=0,K=5*v;if(1<y.length){y.push(m);y.sort(function(a,b){return a.y-b.y});var I=!1,n=m==y[0],v=m==y[y.length-1];if(!n&&!v)for(n=1;n<y.length-1;n++)if(m==y[n]){v=y[n-1];n=y[n+1];x=B=F=(n.y-v.y-v.height-m.height)/2;break}for(n=0;n<y.length-1;n++){var v=y[n],C=y[n+1],J=m==v||m==C,C=C.y-v.y-v.height,I=I|m==v;if(0==B&&
+0==z)B=C,z=1;else if(Math.abs(B-C)<=(J||1==n&&I?t:0))z+=1;else if(1<z&&I){y=y.slice(0,n+1);break}else if(3<=y.length-n&&!I)z=0,x=B=0!=F?F:0,y.splice(0,0==n?1:n),n=-1;else break;0!=x||J||(B=x=C)}3==y.length&&y[1]==m&&(x=0)}if(1<A.length){A.push(m);A.sort(function(a,b){return a.x-b.x});I=!1;n=m==A[0];v=m==A[A.length-1];if(!n&&!v)for(n=1;n<A.length-1;n++)if(m==A[n]){v=A[n-1];n=A[n+1];H=G=D=(n.x-v.x-v.width-m.width)/2;break}for(n=0;n<A.length-1;n++){v=A[n];C=A[n+1];J=m==v||m==C;C=C.x-v.x-v.width;I|=m==
+v;if(0==G&&0==E)G=C,E=1;else if(Math.abs(G-C)<=(J||1==n&&I?t:0))E+=1;else if(1<E&&I){A=A.slice(0,n+1);break}else if(3<=A.length-n&&!I)E=0,H=G=0!=D?D:0,A.splice(0,0==n?1:n),n=-1;else break;0!=H||J||(G=H=C)}3==A.length&&A[1]==m&&(H=0)}t=function(a,b,c,d){var e=[],f;d?(d=K,f=0):(d=0,f=K);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR,
+mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(g.graph.getView().getOverlayPane());return a};G=function(a,b){if(a&&null!=g.guidesArrHor)for(var c=0;c<g.guidesArrHor.length;c++)g.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=g.guidesArrVer)for(c=0;c<g.guidesArrVer.length;c++)g.guidesArrVer[c].node.style.visibility="hidden"};if(1<E&&E==A.length-1){E=[];D=g.guidesArrHor;u=[];k=0;n=A[0]==m?1:0;I=A[n].y+A[n].height;if(0<H)for(n=0;n<A.length-1;n++)v=
+A[n],C=A[n+1],m==v?(k=C.x-v.width-H,u.push(new mxPoint(k+v.width+K,I)),u.push(new mxPoint(C.x-K,I))):m==C?(u.push(new mxPoint(v.x+v.width+K,I)),k=v.x+v.width+H,u.push(new mxPoint(k-K,I))):(u.push(new mxPoint(v.x+v.width+K,I)),u.push(new mxPoint(C.x-K,I)));else v=A[0],n=A[2],k=v.x+v.width+(n.x-v.x-v.width-m.width)/2,u.push(new mxPoint(v.x+v.width+K,I)),u.push(new mxPoint(k-K,I)),u.push(new mxPoint(k+m.width+K,I)),u.push(new mxPoint(n.x-K,I));for(n=0;n<u.length;n+=2)A=u[n],H=u[n+1],A=t(A,H,null!=D?
+D[n/2]:null),A.node.style.visibility="visible",A.redraw(),E.push(A);for(n=u.length/2;null!=D&&n<D.length;n++)D[n].destroy();g.guidesArrHor=E;k-=a.x;u=!0}else G(!0);if(1<z&&z==y.length-1){E=[];D=g.guidesArrVer;d=[];e=0;n=y[0]==m?1:0;z=y[n].x+y[n].width;if(0<x)for(n=0;n<y.length-1;n++)v=y[n],C=y[n+1],m==v?(e=C.y-v.height-x,d.push(new mxPoint(z,e+v.height+K)),d.push(new mxPoint(z,C.y-K))):m==C?(d.push(new mxPoint(z,v.y+v.height+K)),e=v.y+v.height+x,d.push(new mxPoint(z,e-K))):(d.push(new mxPoint(z,v.y+
+v.height+K)),d.push(new mxPoint(z,C.y-K)));else v=y[0],n=y[2],e=v.y+v.height+(n.y-v.y-v.height-m.height)/2,d.push(new mxPoint(z,v.y+v.height+K)),d.push(new mxPoint(z,e-K)),d.push(new mxPoint(z,e+m.height+K)),d.push(new mxPoint(z,n.y-K));for(n=0;n<d.length;n+=2)A=d[n],H=d[n+1],A=t(A,H,null!=D?D[n/2]:null,!0),A.node.style.visibility="visible",A.redraw(),E.push(A);for(n=d.length/2;null!=D&&n<D.length;n++)D[n].destroy();g.guidesArrVer=E;e-=a.y;d=!0}else G(!1,!0)}if(u||d)return m=new mxPoint(k,e),y=b.call(this,
 a,m,f,l),u&&!d?m.y=y.y:d&&!u&&(m.x=y.x),y.y!=m.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),y.x!=m.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),m;G(!0,!0);return b.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,e=this.guidesArrHor;if(null!=b)for(var l=0;l<b.length;l++)b[l].node.style.visibility=a?"visible":"hidden";if(null!=
 e)for(l=0;l<e.length;l++)e[l].node.style.visibility=a?"visible":"hidden"};var a=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){a.call(this);var b=this.guidesArrVer,c=this.guidesArrHor;if(null!=b){for(var f=0;f<b.length;f++)b[f].destroy();this.guidesArrVer=null}if(null!=c){for(f=0;f<c.length;f++)c[f].destroy();this.guidesArrHor=null}}})();Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=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="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><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="#000000"/><add as="fontColor" value="#000000"/></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><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="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="#ffffff"/><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="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><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="#ffffff"/></add></mxStylesheet>').documentElement;
 Graph.prototype.defaultThemes.darkTheme=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="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><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="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></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="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="#2a2a2a"/><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="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><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="#2a2a2a"/></add></mxStylesheet>').documentElement;
diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js
index 664ed98db50925ad0ea2d39942a5a24bb6b3b33f..a694e4d3e8f60cbdc69401ec637c4e1bc8dbf742 100644
--- a/src/main/webapp/js/diagramly/App.js
+++ b/src/main/webapp/js/diagramly/App.js
@@ -440,6 +440,13 @@ App.main = function(callback, createUi)
 		}
 	}
 	
+	// Redirects to the latest AWS icons
+	if (document.referrer != null && urlParams['libs'] == 'aws3' &&
+		document.referrer.substring(0, 42) == 'https://aws.amazon.com/architecture/icons/')
+	{
+		urlParams['libs'] = 'aws4';
+	}
+	
 	if (window.mxscript != null)
 	{
 		// Injects offline dependencies
@@ -4415,7 +4422,7 @@ App.prototype.descriptorChanged = function()
 	
 	this.updateUi();
 
-	if (this.format != null)
+	if (this.format != null && this.editor.graph.isSelectionEmpty())
 	{
 		this.format.refresh();
 	}
diff --git a/src/main/webapp/js/diagramly/DrawioFile.js b/src/main/webapp/js/diagramly/DrawioFile.js
index 1306e6a2a0f18833b463c190edb813684e1710e5..df8c4d10d32f668e33b9005f8a184a341f02aaba 100644
--- a/src/main/webapp/js/diagramly/DrawioFile.js
+++ b/src/main/webapp/js/diagramly/DrawioFile.js
@@ -343,9 +343,21 @@ DrawioFile.prototype.mergeFile = function(file, success, error, diffShadow)
 
 		try
 		{
-			if (this.errorReportsEnabled && reportError)
+			if (reportError)
 			{
-				this.sendErrorReport('Error in mergeFile', null, e);
+				if (this.errorReportsEnabled)
+				{
+					this.sendErrorReport('Error in mergeFile', null, e);
+				}
+				else
+				{
+					var user = this.getCurrentUser();
+					var uid = (user != null) ? user.id : 'unknown';
+					
+					EditorUi.logError('Error in mergeFile', null,
+						this.getMode() + '.' + this.getId(),
+						uid, e);
+				}
 			}
 		}
 		catch (e2)
@@ -475,6 +487,14 @@ DrawioFile.prototype.checksumError = function(error, patches, details, etag, fun
 				}), function() {});
 			}
 		}
+		else
+		{
+			var user = this.getCurrentUser();
+			var uid = (user != null) ? user.id : 'unknown';
+			
+			EditorUi.logError('Checksum Error in ' + functionName, null,
+				this.getMode() + '.' + this.getId(), uid);
+		}
 	}
 	catch (e)
 	{
@@ -1673,6 +1693,15 @@ DrawioFile.prototype.fileSaved = function(savedData, lastDesc, success, error)
 			{
 				this.sendErrorReport('Error in fileSaved', null, e);
 			}
+			else
+			{
+				var user = this.getCurrentUser();
+				var uid = (user != null) ? user.id : 'unknown';
+				
+				EditorUi.logError('Error in fileSaved', null,
+					this.getMode() + '.' + this.getId(),
+					uid, e);
+			}
 		}
 		catch (e2)
 		{
diff --git a/src/main/webapp/js/diagramly/DrawioFileSync.js b/src/main/webapp/js/diagramly/DrawioFileSync.js
index a784a646daa1eba9a4b7e919dc7299904a1e786f..35168712de90ff531c332e5582970a22bfacc593 100644
--- a/src/main/webapp/js/diagramly/DrawioFileSync.js
+++ b/src/main/webapp/js/diagramly/DrawioFileSync.js
@@ -973,12 +973,20 @@ DrawioFileSync.prototype.merge = function(patches, checksum, etag, success, erro
 				var to = this.ui.hashValue(etag);
 				
 				this.file.sendErrorReport('Error in merge',
-					'From: ' + from +
-					'\nTo: ' + to +
+					'From: ' + from + '\nTo: ' + to +
 					'\nChecksum: ' + checksum +
 					'\nPatches:\n' + this.file.compressReportData(
 						JSON.stringify(patches, null, 2)), e);
 			}
+			else
+			{
+				var user = this.file.getCurrentUser();
+				var uid = (user != null) ? user.id : 'unknown';
+				
+				EditorUi.logError('Error in merge', null,
+					this.file.getMode() + '.' +
+					this.file.getId(), uid, e);
+			}
 		}
 		catch (e2)
 		{
diff --git a/src/main/webapp/js/diagramly/DriveClient.js b/src/main/webapp/js/diagramly/DriveClient.js
index 4e68907ffeaa12dfd457e77891d2005b8ec5f341..bbf2c0e71c482cd1db80dcd3d051251c33ecdd14 100644
--- a/src/main/webapp/js/diagramly/DriveClient.js
+++ b/src/main/webapp/js/diagramly/DriveClient.js
@@ -1143,6 +1143,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, error, noChec
 		{
 			// NOTE: getThumbnail is asynchronous and returns false if no thumbnails can be created
 			if (unloading || file.constructor == DriveLibrary || !this.enableThumbnails || urlParams['thumb'] == '0' ||
+				(file.desc.mimeType != null && file.desc.mimeType.substring(0, 29) != 'application/vnd.jgraph.mxfile') ||
 				!this.ui.getThumbnail(this.thumbnailWidth, mxUtils.bind(this, function(canvas)
 				{
 					// Callback for getThumbnail
diff --git a/src/main/webapp/js/diagramly/Minimal.js b/src/main/webapp/js/diagramly/Minimal.js
index 44dfa104366e6af567ac9bdc719833ce414c470d..721d7e98b97ed51e65409d9424afdf924f094cb7 100644
--- a/src/main/webapp/js/diagramly/Minimal.js
+++ b/src/main/webapp/js/diagramly/Minimal.js
@@ -958,7 +958,7 @@ EditorUi.initMinimalTheme = function()
         div.style.bottom = (urlParams['embed'] != '1' || urlParams['libraries'] == '1') ? '63px' : '32px';
         this.sidebar = this.createSidebar(div);
         
-        if (urlParams['clibs'])
+        if (urlParams['clibs'] != null || urlParams['libs'] != null)
         {
         	toggleShapes(this);
         }
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS4.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS4.js
index eb1a168605d4656c5fc0276a4d7860244d08adce..c4e741d4d287896f68331204b49de675f769e0a6 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS4.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-AWS4.js
@@ -8,8 +8,8 @@
 		var h = 100 * s;
 		var w2 = 60 * s;
 		var pts = 'points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];';
-		var n = pts + 'outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#ffffff;fillColor=#232F3E;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
-		var n2 = pts + 'outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
+		var n = pts + 'outlineConnect=0;fontColor=#232F3E;strokeColor=#ffffff;dashed=0;verticalLabelPosition=middle;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=10;fontStyle=1;spacing=3;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
+		var n2 = pts + 'outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
 		var n3 = 'outlineConnect=0;gradientColor=none;fontColor=#545B64;strokeColor=none;fillColor=#879196;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
 		var n4 = pts + 'outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;' + mxConstants.STYLE_SHAPE + "=mxgraph.aws4.";
 		var gn = 'mxgraph.aws4';
@@ -206,6 +206,8 @@
 	Sidebar.prototype.addAWS4AnalyticsPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service analytics';
+		n = 'gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;' + n;
+		n2 = 'strokeColor=#5A30B5;' + n2;
 		
 		this.addPaletteFunctions('aws4Analytics', 'AWS / Analytics', false,
 		[
@@ -260,6 +262,8 @@
 	Sidebar.prototype.addAWS4ApplicationIntegrationPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service application integration';
+		n = 'gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;' + n;
+		n2 = 'strokeColor=#BC1356;' + n2;
 		
 		this.addPaletteFunctions('aws4Application Integration', 'AWS / Application Integration', false,
 		[
@@ -290,6 +294,8 @@
 	Sidebar.prototype.addAWS4ARVRPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service ar vr augmented virtual reality';
+		n = 'gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;' + n;
+		n2 = 'strokeColor=#BC1356;' + n2;
 		
 		this.addPaletteFunctions('aws4AR VR', 'AWS / AR & VR', false,
 		[
@@ -301,6 +307,8 @@
 	Sidebar.prototype.addAWS4CostManagementPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service cost management';
+		n = 'gradientColor=#60A337;gradientDirection=north;fillColor=#277116;' + n;
+		n2 = 'strokeColor=#277116;' + n2;
 		
 		this.addPaletteFunctions('aws4Cost Management', 'AWS / Cost Management', false,
 		[
@@ -318,6 +326,8 @@
 	Sidebar.prototype.addAWS4BusinessProductivityPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service business productivity';
+		n = 'gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;' + n;
+		n2 = 'strokeColor=#C7131F;' + n2;
 		
 		this.addPaletteFunctions('aws4Business Productivity', 'AWS / Business Productivity', false,
 		[
@@ -329,6 +339,8 @@
 	Sidebar.prototype.addAWS4ComputePalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service compute';
+		n = 'gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;' + n;
+		n2 = 'strokeColor=#D05C17;' + n2;
 		
 		this.addPaletteFunctions('aws4Compute', 'AWS / Compute', false,
 		[
@@ -405,6 +417,8 @@
 	Sidebar.prototype.addAWS4CustomerEngagementPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service customer engagement';
+		n = 'gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;' + n;
+		n2 = 'strokeColor=#3334B9;' + n2;
 		
 		this.addPaletteFunctions('aws4Customer Engagement', 'AWS / Customer Engagement', false,
 		[
@@ -423,6 +437,8 @@
 	Sidebar.prototype.addAWS4DatabasePalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service db database';
+		n = 'gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;' + n;
+		n2 = 'strokeColor=#3334B9;' + n2;
 		
 		this.addPaletteFunctions('aws4Database', 'AWS / Database', false,
 		[
@@ -497,6 +513,8 @@
 	Sidebar.prototype.addAWS4DesktopAppStreamingPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service db database';
+		n = 'gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;' + n;
+		n2 = 'strokeColor=#116D5B;' + n2;
 		
 		this.addPaletteFunctions('aws4Desktop App Streaming', 'AWS / Desktop & App Streaming', false,
 		[
@@ -508,6 +526,8 @@
 	Sidebar.prototype.addAWS4DeveloperToolsPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service dev developer tools';
+		n = 'gradientColor=#4D72F3;gradientDirection=north;fillColor=#3334B9;' + n;
+		n2 = 'strokeColor=#3334B9;' + n2;
 		
 		this.addPaletteFunctions('aws4Developer Tools', 'AWS / Developer Tools', false,
 		[
@@ -535,6 +555,8 @@
 	Sidebar.prototype.addAWS4GameDevelopmentPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service game development';
+		n = 'gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;' + n;
+		n2 = 'strokeColor=#5A30B5;' + n2;
 		
 		this.addPaletteFunctions('aws4Game Development', 'AWS / Game Development', false,
 		[
@@ -546,6 +568,8 @@
 	Sidebar.prototype.addAWS4InternetOfThingsPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service internet of things iot';
+		n = 'gradientColor=#60A337;gradientDirection=north;fillColor=#277116;' + n;
+		n2 = 'strokeColor=#277116;' + n2;
 		
 		this.addPaletteFunctions('aws4Internet of Things', 'AWS / Internet of Things', false,
 		[
@@ -571,6 +595,8 @@
 	Sidebar.prototype.addAWS4IOTThingsPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service internet of things iot';
+		n = 'gradientColor=#60A337;gradientDirection=north;fillColor=#277116;' + n;
+		n2 = 'strokeColor=#277116;' + n2;
 		
 		this.addPaletteFunctions('aws4IoT Things', 'AWS / IoT Things', false,
 		[
@@ -614,6 +640,8 @@
 	Sidebar.prototype.addAWS4IOTResourcesPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service internet of things iot resources';
+		n = 'gradientColor=#60A337;gradientDirection=north;fillColor=#277116;' + n;
+		n2 = 'strokeColor=#277116;' + n2;
 		
 		this.addPaletteFunctions('aws4IoT Resources', 'AWS / IoT Resources', false,
 		[
@@ -671,6 +699,8 @@
 	Sidebar.prototype.addAWS4MachineLearningPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service machine learning';
+		n = 'gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;' + n;
+		n2 = 'strokeColor=#116D5B;' + n2;
 		
 		this.addPaletteFunctions('aws4Machine Learning', 'AWS / Machine Learning', false,
 		[
@@ -702,6 +732,8 @@
 	Sidebar.prototype.addAWS4ManagementToolsPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service management tools';
+		n = 'gradientColor=#F34482;gradientDirection=north;fillColor=#BC1356;' + n;
+		n2 = 'strokeColor=#BC1356;' + n2;
 		
 		this.addPaletteFunctions('aws4Management Tools', 'AWS / Management Tools', false,
 		[
@@ -798,6 +830,8 @@
 	Sidebar.prototype.addAWS4MediaServicesPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service media services';
+		n = 'gradientColor=#F78E04;gradientDirection=north;fillColor=#D05C17;' + n;
+		n2 = 'strokeColor=#D05C17;' + n2;
 		
 		this.addPaletteFunctions('aws4Media Services', 'AWS / Media Services', false,
 		[
@@ -821,6 +855,8 @@
 	Sidebar.prototype.addAWS4MigrationPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service migration';
+		n = 'gradientColor=#4AB29A;gradientDirection=north;fillColor=#116D5B;' + n;
+		n2 = 'strokeColor=#116D5B;' + n2;
 		
 		this.addPaletteFunctions('aws4Migration', 'AWS / Migration', false,
 		[
@@ -844,6 +880,8 @@
 	Sidebar.prototype.addAWS4MobileServicesPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service mobile services';
+		n = 'gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;' + n;
+		n2 = 'strokeColor=#C7131F;' + n2;
 		
 		this.addPaletteFunctions('aws4Mobile Services', 'AWS / Mobile Services', false,
 		[
@@ -863,6 +901,8 @@
 	Sidebar.prototype.addAWS4NetworkContentDeliveryPalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service netowrk content delivery';
+		n = 'gradientColor=#945DF2;gradientDirection=north;fillColor=#5A30B5;' + n;
+		n2 = 'strokeColor=#5A30B5;' + n2;
 		
 		this.addPaletteFunctions('aws4Network Content Delivery', 'AWS / Network & Content Delivery', false,
 		[
@@ -919,6 +959,8 @@
 	Sidebar.prototype.addAWS4SecurityIdentityCompliancePalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service security identity compliance';
+		n = 'gradientColor=#F54749;gradientDirection=north;fillColor=#C7131F;' + n;
+		n2 = 'strokeColor=#C7131F;' + n2;
 		
 		this.addPaletteFunctions('aws4Security Identity Compliance', 'AWS / Security, Identity & Compliance', false,
 		[
@@ -983,6 +1025,8 @@
 	Sidebar.prototype.addAWS4StoragePalette = function(w, h, w2, n, n2, gn, sb)
 	{
 		var dt = 'aws amazon web service storage';
+		n = 'gradientColor=#60A337;gradientDirection=north;fillColor=#277116;' + n;
+		n2 = 'strokeColor=#277116;' + n2;
 		
 		this.addPaletteFunctions('aws4Storage', 'AWS / Storage', false,
 		[
diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar.js b/src/main/webapp/js/diagramly/sidebar/Sidebar.js
index b91863ac0cb737f3e5d7b22720e577ef4b6688cc..c96714895b3a5d825549665e9d185a832a7ac3b7 100644
--- a/src/main/webapp/js/diagramly/sidebar/Sidebar.js
+++ b/src/main/webapp/js/diagramly/sidebar/Sidebar.js
@@ -444,7 +444,7 @@
             			{title: mxResources.get('networking'),
             			entries: [{title: 'AWS17', id: 'aws3', image: IMAGE_PATH + '/sidebar-aws3.png'},
             			// TODO: Add isometric containers  		                          
-            				      {title: 'AWS18', id: 'aws4', image: IMAGE_PATH + '/sidebar-aws4.png'},
+            				      {title: 'AWS19', id: 'aws4', image: IMAGE_PATH + '/sidebar-aws4.png'},
             					  {title: 'Allied Telesis', id: 'allied_telesis', image: IMAGE_PATH + '/sidebar-allied_telesis.png'},
             			          {title: mxResources.get('aws3d'), id: 'aws3d', image: IMAGE_PATH + '/sidebar-aws3d.png'},
             			          {title: mxResources.get('azure'), id: 'azure', image: IMAGE_PATH + '/sidebar-azure.png'},
diff --git a/src/main/webapp/js/embed-static.min.js b/src/main/webapp/js/embed-static.min.js
index e5f65ad3e1c56de8499caad5bcb4abe15a7a37dc..d95d10d19c609052c56c06657ba42d36acd38c86 100644
--- a/src/main/webapp/js/embed-static.min.js
+++ b/src/main/webapp/js/embed-static.min.js
@@ -184,7 +184,7 @@ f)+"\n"+t+"}":"{"+z.join(",")+"}";f=t;return l}}"function"!==typeof Date.prototy
 e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof JSON.stringify&&(JSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})});
 "function"!==typeof JSON.parse&&(JSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.prototype.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=""+a;d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
 "]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})})();"undefined"===typeof window.mxBasePath&&(window.mxBasePath="https://www.draw.io/mxgraph/");window.mxLoadStylesheets=window.mxLoadStylesheets||!1;window.mxLoadResources=window.mxLoadResources||!1;window.mxLanguage=window.mxLanguage||"en";window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
-window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"10.1.7",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&
+window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"10.1.8",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&
 0>navigator.userAgent.indexOf("Edge/"),IS_OP:0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/"),IS_OT:0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&
 0>navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_IOS:navigator.userAgent.match(/(iPad|iPhone|iPod)/g)?!0:!1,IS_GC:0<=navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:0<=navigator.userAgent.indexOf("Firefox/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&
 0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||
diff --git a/src/main/webapp/js/mxgraph/Editor.js b/src/main/webapp/js/mxgraph/Editor.js
index 5e1f96f24c539451c12e3824999e23fc9039c12a..06f4bd216157e43cf2f7aa28ed70d8d2dbc4e101 100644
--- a/src/main/webapp/js/mxgraph/Editor.js
+++ b/src/main/webapp/js/mxgraph/Editor.js
@@ -194,6 +194,16 @@ Editor.previousLargeImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAA
  */
 Editor.nextLargeImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg==';
 
+/**
+ * Specifies the image to be used for the refresh button.
+ */
+Editor.refreshLargeImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAErnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarVdrlispCP7PKmYJouJjOT7PuTuY5c+HZZJKOkmn+055UioiIB9ghca/fyb9g8dyDOQlppBDMHh89tkWDJI5nqNn49d7PXYvYX5Hp+uCBcmhd8c0jM1fQJfbhug3vd7TKbYtJ21Be+Ei0Klm1bb50hbk7EHnPae89xV/Os7+zWbXstRj6XHuI5zRBfKcJTscO4N3Ui0OFrjsitOxvsUqhTG2Li7KC9/RdfjgvOvowXembLq7dwWZsBnCg482neW575aHzhbxTfPdQsgmmvNz9t3sac5xnK74AE8F2oe6HGWNwAh3ere2BbSIn2AcV8toCUdsQKwDzYrWiDNbeHuy586FJ4/VN24w0dthI3prm3WLlly02bYFitfG00bA08kl4NGAmgPZXm3hpTcvfY0TNHcGp2UIY+z40ugZ8TftKmhODV1mk66+gl1WYxpmKHL6BhcA4bl9Ksu/q9EpbswJWAcEZbk54YDF1ENEFb7Flls4O/CJ8WSO1ODYtwC4CLoFxiCiPZvATjiwidZGZvgxAZ8Cy63ztgIBFrGdaQIb5wLASVZ1Y0/kxWvFHmSUFgAhLiBJkiYQwPJeED/RJ8RQESeeRCRIlCRZSnDBBwkhxKA1qkQXfZQYYowp5liSSz5JCimmlHIq2WaHEiY55Eg55ZxLgdIC0QW7CzhKqba66qvUUGNNNdfSED7NN2mhxZZabqXb7jrSv4ceqaeeexk8EErDDxlhxJFGHmUi1qabfsoMM8408yxX1Daq96jxA3LvUeONmiLmF1+8oQZyjBcRrOVEFDMgZj0D8agIIKCtYmYSe28VOcXMZIukEAvUWBSczooYEPSDrUy+YndD7i1uJP5HuNlXyJFC938gRwrdRu4rbk9Q62XdKG4BpFmoPjVuorCBYaRiU9E76eN+1llySMahUBZbB82pgxvh6TwdhFiWpMXw2NOrhZf9rO0Qi4PWEeDRtUI/EPHa7t4C1eaKMs7aS2ldb2DEQ6kIC1z0DVeyxD6cTBNFL2hh/9ALkBDca+yrUrGf/6an1wwZVhjExuxr8MUMh2GoHQfSQ9KPHP2mfymI4VJ8HGm4rMEpiNTXZSZzcfpaopeBV8fiAcQqSV5EJmR1FVooLeaPY9vrroDtYw1OR3OXmHgdgcl85iO1p6ZcRi+f+/aLC2kdE9KSG2uAcjqfRJ32Dkcy9sXR6YEAFSGvwEFA66E/jUg6RV5GInA9mQBRqMYdieL2tCNhTjNJiEy9lj2O9nEmXDVhxppfvAzYM7qfvpmNHjleBH1VQyt5D14l/3pGS1Uz8qN0fyKS7qf2KELuAvwialVag+f16OjpgXACfg3f7b0pGxKpofK913aUye8spG/VHb55bxnEUur6h09C+TxrV3KOPbgs0Lv8PBWvxxukzAWSP8XRCdIhDhqs1Sv0fQnYKo5kXwv0ztyf9PSLUv+00tFH1nxgK/29LUdP20PXq8JoEd82XGZr//0nAIq/bPpxecDZaeA77bNvo+sVBTkOcvjGQT/7vHrd0129HqUcF9elfOOrJDaO/vvkpde5iu/FjH/P/wGZHRMfLTnvnwAAAAJiS0dEAP+Hj8y/AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wIFCRsCWfPx5wAAAnVJREFUSMfNlT1oU1EYht+TpLG2tqJVCqI2BXFQEcGiKGjRwUlKlVIFcalCHXTwb3FxEAedHDp1C0IFoTg4VQS1KlJLxani0oiKIk1r0/8kvedxyM1tbm6uVETwu9t33vc939/5rvSXZsIOrExEEUWErGyW6pULZBVfoz06rBZtUZ2sJvRRr/VSKeMUMfNabeapDZKnRA1dDLOI3yzjPGAfkcuSMLTxiP2ZYNjs4glLhNkMd1mP4SSTwD3rj98ajvGZ35vlOZf4CUCPNVKsSHdkjqpPDVp2/NAnpRVVoxJqcKtl1KpDigRy/ya2M+bds8QgnWwijsFQTTMXGMWWRdNTkgJx+r2DDNepyfkucMRGesuq4xNoI+e6p+kkGKIwnCYbIkCcAdfpcCOE3s5kaArsJOM631MXpA+J4wG6KxCRpqSDqi8oqdfOBAVapA6tC7hnpWIbR3RbkrSgh9EK8x4Vd5RSlc+5qPvDeNNv3S8V8mSGPETxczSk/8NMoUll+UnYfLQiwcNCPlIoIkZXdL5svqcj3XoXpC9JHbolI2nKdOhLQSrGcKDHDl0V71/FKxcxxoaiM8ZIgJ6stG7mRDt5F5PEhAlYktQH6RmRYNTFZDmyHFa5QIrNQXpOJHjhYR5TFS5gGeQA0YWS0hHnBB88RJq9UwoXAJijnzPsZisJWujmmffcIctFSrehJ2D57ts6llnGSbPgk85xE//UuAIOSZro86pc2TJcJTB0UQZwCpWnmnOkAtuv2Nw3tFZYNzmxjVPFvlvRyDXeMl0i45DmKWepza/s35hXrEbN2qEmrZWjCaU0qq8m98cvLScrp7B4/p39Au+cBBvd+o3cAAAAAElFTkSuQmCC'; 
+
+/**
+ * Specifies the image to be used for the back button.
+ */
+Editor.backLargeImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADxnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjatVZbkuQoDPznFHsEJCEexwEDEXuDOf4mmHq7e6vcPUWUhWUhJZmAbdqff7v5Bz+2wsZpiD55b/FzySXO6ES7/3ZL1s3r/PF6hPsHv7k+YLgEVvZb31Z8hl9vA4Jb/vLoN2FbeeJKtB5cEsqoPKqtuLgSCe9+WvcmrXHZ3U1n/bvf09JK/nzvAsioaidH3ITE4hpHFQECSZJl9MdVeXgIfZ5+lXTMnbl2n8i79p64s3n55ZEKY/0K8E8cLT/pMXeToXtEdKv88KDma4lX7nqNvbd9dtl5MOXNmtRlKrOHwAIqZQ7zaAF/RT/MltAiprhBsQo1C9pmKBGD7U6OKmXq1KbdaANEx40DLPPGMn1RAifepihuNOocIEM1EqHHBtUEbr5ioVk3zXobRVSuhEgmJCOMeGnmyHmmXRP1vu1LLV65Ai4eaxowhnLjiigIQn1xqpPf2czdurF3wgoU1ElzxASzLXuKonRbWzJ1FsSpdcbuW4NCXQlAEWorwGBFO7KeRMmTDcyBCDxG6JOBnMVxgQKkypVMhzYiHuJEHrUxJtCMZeXdjaMFQqh4CZAGGwViOadYP8FFrKGsos6oqtegUZNmL9559d4HP86oHCS4oMGHEGJIIUeJLmr0McQYU8yJk+AI0+RTMCmmlHJG0YzUGaMzInIuXKS4osWXUGJJJW9YPpvbdPNb2OKWtly5SsX2r74GU2NNNTdqWErNNW2+hRZbarljrXXprmv3PfTYU89X1Zaqj6rRk3Lfq0ZLtaGYm3HhphrcIVxS0DhOdGgGxdgRFA9DASxoHprZSM7xUG5oZhNjUyhDNdIhTqWhGBR0jVg7XbW7KfetbkbdR7rxV8qZId1vKGeGdEu5V90OVKt5vlFkCjR24eDUSsfBhoAWM8c83kmnrXl0lNaxsx+jejyR6KwtzbwiGLa08d75wdTeR/AMwJxFcBLRkQjDpuLmFlbC99H4nsDlh/arRKH26orT8d0ynDfLii8heRlmfgnQJREAgIOv0G327URnkUwG8BIZXyNPFJD2PfCVnW+t+XQA7ODhpbw5V//Vmp/g2FXYhTKTkh/jsfuCfA9PcTgz49wuDTtE89wr+8bhaKyM/bo/RZi/PvnQms8HytrA88ToBef0uDNPMQtdn5P4pIg5M40jdOYe3jG697gz59G8JDomb8WMN+89vAJ4dJTN/Aqcg0QD3hfg1mLcz+6F8TbW8C+RZP5H27fR/TWOPkZ34erbqeFrKJn/AEE/tAwjCLp7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAuJAAALiQE3ycutAAAAB3RJTUUH4wIFCR4CJIQFogAAAWRJREFUWMPFlztLA0EURjdqJNk0gTQhkEdjYWdhIyI2YusPsbOztbFKI4ggaSxSa6FdQIgQtFKwCwhxEQI2isEHWeYeC2fxkkYLvfvBsM0w5yyX/YYNgn8IsAGMgFZgHWANeOcrH9bwFeCV72xawpcm4NuW8AXgWcGblvA5YKjgB5bwOhApeMsSXgUGCt52zmVM4CJSBvoKfioiWas3LwI3Cn4O5K3gIdBT8AsgtIR3FfwSKFjNPAd0FPwWKFnBZ4ATBb8DKpafW1PB74Ga9QUz8vAIaPz1+VO/2DP2z6xf5vf7jhpBBNRNBZxzGaCtJAZA1VRCRGaBMyXRF5Gy9SjyvnaTXANFa4nQ12+SnlkVK4kCcKUkumlIlHwdJ+mISM5aouJrOcmxiExbS9R8PSc5iuPYvKgawIOSOEyjLeeBRyWxn4bEIvCiJHbTkFie+DvaSkNiFXjzAuMgjQDrwBOw99PeT/vzU1TSg3fFAAAAAElFTkSuQmCC';
+
 /**
  * Specifies the image URL to be used for the transparent background.
  */
diff --git a/src/main/webapp/js/mxgraph/EditorUi.js b/src/main/webapp/js/mxgraph/EditorUi.js
index 28237291dbe5cc8c6d9725a485b6692e1660277a..c608ccc652ed840028ee2a57eb27b2100e893c87 100644
--- a/src/main/webapp/js/mxgraph/EditorUi.js
+++ b/src/main/webapp/js/mxgraph/EditorUi.js
@@ -1477,6 +1477,8 @@ EditorUi.prototype.initCanvas = function()
 		// as this may be used in a viewer that has no CSS
 		if (urlParams['toolbar'] != '0')
 		{
+			var toolbarConfig = JSON.parse(decodeURIComponent(urlParams['toolbar-config'] || '{}'));
+			
 			this.chromelessToolbar = document.createElement('div');
 			this.chromelessToolbar.style.position = 'fixed';
 			this.chromelessToolbar.style.overflow = 'hidden';
@@ -1529,6 +1531,15 @@ EditorUi.prototype.initCanvas = function()
 				return a;
 			});
 			
+			if (toolbarConfig.backBtn != null)
+			{
+				addButton(mxUtils.bind(this, function(evt)
+				{
+					window.location.href = toolbarConfig.backBtn.url;
+					mxEvent.consume(evt);
+				}), Editor.backLargeImage, mxResources.get('goback', null, 'Go Back'));
+			}
+			
 			var prevButton = addButton(mxUtils.bind(this, function(evt)
 			{
 				this.actions.get('previousPage').funct();
@@ -1771,6 +1782,23 @@ EditorUi.prototype.initCanvas = function()
 				}), Editor.closeLargeImage, mxResources.get('close') + ' (Escape)');
 			}
 	
+			if (toolbarConfig.refreshBtn != null)
+			{
+				addButton(mxUtils.bind(this, function(evt)
+				{
+					if (toolbarConfig.refreshBtn.url)
+					{
+						window.location.href = toolbarConfig.refreshBtn.url;
+					}
+					else
+					{
+						window.location.reload();
+					}
+					
+					mxEvent.consume(evt);
+				}), Editor.refreshLargeImage, mxResources.get('refresh', null, 'Refresh'));
+			}
+			
 			// Initial state invisible
 			this.chromelessToolbar.style.display = 'none';
 			mxUtils.setPrefixedStyle(this.chromelessToolbar.style, 'transform', 'translate(-50%,0)');
diff --git a/src/main/webapp/js/reader.min.js b/src/main/webapp/js/reader.min.js
index db88c33327a945927cf009017a85949784c34a8c..8be10986c763d3122926e4c8ef5987d3507de2f9 100644
--- a/src/main/webapp/js/reader.min.js
+++ b/src/main/webapp/js/reader.min.js
@@ -184,7 +184,7 @@ f)+"\n"+t+"}":"{"+z.join(",")+"}";f=t;return l}}"function"!==typeof Date.prototy
 e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof JSON.stringify&&(JSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})});
 "function"!==typeof JSON.parse&&(JSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.prototype.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=""+a;d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
 "]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})})();"undefined"===typeof window.mxBasePath&&(window.mxBasePath="https://www.draw.io/mxgraph/");window.mxLoadStylesheets=window.mxLoadStylesheets||!1;window.mxLoadResources=window.mxLoadResources||!1;window.mxLanguage=window.mxLanguage||"en";window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
-window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"10.1.7",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&
+window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"../../../src";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de"];var mxClient={VERSION:"10.1.8",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&
 0>navigator.userAgent.indexOf("Edge/"),IS_OP:0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/"),IS_OT:0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&
 0>navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_IOS:navigator.userAgent.match(/(iPad|iPhone|iPod)/g)?!0:!1,IS_GC:0<=navigator.userAgent.indexOf("Chrome/")&&0>navigator.userAgent.indexOf("Edge/"),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:0<=navigator.userAgent.indexOf("Firefox/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&
 0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||
diff --git a/src/main/webapp/js/shapes.min.js b/src/main/webapp/js/shapes.min.js
index 04a58cc5800039ed1654257eb5bcb2dcc163f9ee..2991f2502bca4ebc67b81f7a6df1cc6695f1158d 100644
--- a/src/main/webapp/js/shapes.min.js
+++ b/src/main/webapp/js/shapes.min.js
@@ -1276,8 +1276,9 @@ a.close();a.fill();"0"==f?a.setAlpha(e[1]):a.setAlpha(e[0]);a.begin();a.moveTo(.
 b,.2898*c);a.moveTo(.5325*b,.9976*c);a.lineTo(.603*b,.7593*c);a.stroke();a.setStrokeWidth(2*d);a.setLineCap("round");a.begin();a.moveTo(.3388*b,.3802*c);a.lineTo(.5027*b,.2345*c);a.lineTo(.6667*b,.3802*c);a.lineTo(.5027*b,.526*c);a.close();a.moveTo(.4426*b,.3802*c);a.lineTo(.5027*b,.3266*c);a.lineTo(.5628*b,.3802*c);a.lineTo(.5027*b,.4338*c);a.close();a.moveTo(.3867*b,.3284*c);a.lineTo(.3541*b,.2998*c);a.moveTo(.4436*b,.2748*c);a.lineTo(.4077*b,.2412*c);a.moveTo(.5704*b,.2803*c);a.lineTo(.5992*b,
 .2513*c);a.moveTo(.6231*b,.3284*c);a.lineTo(.6503*b,.3032*c);a.moveTo(.622*b,.4338*c);a.lineTo(.6557*b,.4606*c);a.moveTo(.5667*b,.4845*c);a.lineTo(.5992*b,.5156*c);a.moveTo(.4414*b,.4874*c);a.lineTo(.412*b,.5159*c);a.moveTo(.3889*b,.4405*c);a.lineTo(.3607*b,.4657*c);a.stroke();a.setStrokeColor("#292929");a.setLineJoin("round");a.begin();a.moveTo(0,.5276*c);a.lineTo(0,.4188*c);a.lineTo(.071*b,.2898*c);a.lineTo(.4033*b,0);a.lineTo(.9301*b,.464*c);a.lineTo(b,.5863*c);a.lineTo(b,.7035*c);a.lineTo(.6667*
 b,c);a.lineTo(.5355*b,c);a.close();a.stroke()};mxCellRenderer.registerShape(mxShapeAws3dEbs2.prototype.cst.EBS2,mxShapeAws3dEbs2);function mxShapeAws4ProductIcon(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeAws4ProductIcon,mxShape);mxShapeAws4ProductIcon.prototype.cst={PRODUCT_ICON:"mxgraph.aws4.productIcon"};
-mxShapeAws4ProductIcon.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);d=mxUtils.getValue(this.state.style,"strokeColor","#000000");a.setFillColor(d);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fill();a.setShadow(!1);c=mxUtils.getValue(this.state.style,"fillColor","#ffffff");a.setFillColor(c);a.begin();a.moveTo(1,1);a.lineTo(b-1,1);a.lineTo(b-1,b-1);a.lineTo(1,b-1);a.close();a.fill();c=mxUtils.getValue(this.state.style,"prIcon","");c=mxStencilRegistry.getStencil(c);
-null!=c&&(a.setFillColor(d),a.setStrokeColor("none"),c.drawShape(a,this,1,1,b-2,b-2))};mxCellRenderer.registerShape(mxShapeAws4ProductIcon.prototype.cst.PRODUCT_ICON,mxShapeAws4ProductIcon);function mxShapeAws4ResourceIcon(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeAws4ResourceIcon,mxShape);mxShapeAws4ResourceIcon.prototype.cst={RESOURCE_ICON:"mxgraph.aws4.resourceIcon"};
+mxShapeAws4ProductIcon.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);var f=e=d=mxUtils.getValue(this.style,"opacity","100");"none"==g&&(e=0);"none"==h&&(f=0);d=mxUtils.getValue(this.state.style,"strokeColor","#000000");a.setFillColor(d);a.setGradient(g,g,0,0,b,c,k,e,f);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fill();a.setShadow(!1);var g=mxUtils.getValue(this.state.style,"fillColor","#ffffff"),h=mxUtils.getValue(this.state.style,"gradientColor",
+g),k=mxUtils.getValue(this.state.style,"gradientDirection","south");a.setFillColor(g);a.setGradient(g,h,0,0,b,c,k,e,f);a.begin();a.moveTo(1,1);a.lineTo(b-1,1);a.lineTo(b-1,b-1);a.lineTo(1,b-1);a.close();a.fill();c=mxUtils.getValue(this.state.style,"prIcon","");c=mxStencilRegistry.getStencil(c);null!=c&&(a.setFillColor(d),a.setStrokeColor("none"),c.drawShape(a,this,1,1,b-2,b-2))};mxCellRenderer.registerShape(mxShapeAws4ProductIcon.prototype.cst.PRODUCT_ICON,mxShapeAws4ProductIcon);
+function mxShapeAws4ResourceIcon(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeAws4ResourceIcon,mxShape);mxShapeAws4ResourceIcon.prototype.cst={RESOURCE_ICON:"mxgraph.aws4.resourceIcon"};
 mxShapeAws4ResourceIcon.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke();d=mxUtils.getValue(this.state.style,"resIcon","");d=mxStencilRegistry.getStencil(d);null!=d&&(e=mxUtils.getValue(this.state.style,"strokeColor","#000000"),a.setFillColor(e),a.setStrokeColor("none"),d.drawShape(a,this,0,0,b,c))};mxCellRenderer.registerShape(mxShapeAws4ResourceIcon.prototype.cst.RESOURCE_ICON,mxShapeAws4ResourceIcon);
 function mxShapeAws4Group(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxShapeAws4Group,mxShape);mxShapeAws4Group.prototype.cst={GROUP:"mxgraph.aws4.group"};
 mxShapeAws4Group.prototype.paintVertexShape=function(a,d,e,b,c){a.translate(d,e);a.begin();a.moveTo(0,0);a.lineTo(b,0);a.lineTo(b,c);a.lineTo(0,c);a.close();a.fillAndStroke();a.setShadow(!1);d=mxUtils.getValue(this.state.style,"grIcon","");d=mxStencilRegistry.getStencil(d);null!=d&&(e=mxUtils.getValue(this.state.style,"strokeColor","#000000"),a.setFillColor(e),a.setStrokeColor("none"),d.drawShape(a,this,0,0,25,25))};mxCellRenderer.registerShape(mxShapeAws4Group.prototype.cst.GROUP,mxShapeAws4Group);
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index 27b37b592b0002d6fd37309999fcf14794b31245..186dc68e9d174322dd9424e652078b13982106c0 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -1981,6 +1981,8 @@ Editor.layersLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgC
 Editor.closeLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAUVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////8IN+deAAAAGnRSTlMAuvAIg/dDM/QlOeuFhj0S5s4vKgzjxJRQNiLSey0AAADNSURBVDjLfZLbEoMgDEQjRRRs1XqX///QNmOHJSnjPkHOGR7IEmeoGtJZstnwjqbRfIsmgEdtPCqe9Ynz7ZSc07rE2QiSc+qv8TvjRXA2PDUm3dpe82iJhOEUfxJJo3aCv+jKmRmH4lcCjCjeh9GWOdL/GZZkXH3PYYDrHBnfc4D/RVZf5sjoC1was+Y6HQxwaUxFvq/a0Pv343VCTxfBSRiB+ab3M3eiQZXmMNBJ3Y8pGRZtYQ7DgHMXJEdPLTaN/qBjzJOBc3nmNcbsA16bMR0oLqf+AAAAAElFTkSuQmCC";
 Editor.editLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA+hzi3nRQWyXzkm0h2j3u54gzEgSXjlYoTBgJxL2loGpAOS3Jt7Wxm35Ga7gRAAAA6UlEQVQ4y63Q2XaCMBSF4Q0JBasoQ5DJqbXjfv8HbCK2BZNwo/8FXHx7rcMC7lQu0iX8qU/qtvAWCpoqH8dYzS0SwaV5eK/UAf8X9pd2CWKzuF5Jrftp1owXwnIGLUaL3PYndOHf4kNNXWrXK/m7CHunk7K8LE6YtBpcknwG9GKxnroY+ylBXcx4xKyx/u/EuXi509cP9V7OO1oyHnzrdFTcqLG/4ibBA5pIMr/4xvKzuQDkVy9wW8SgBFD6HDvuzMvrZcC9QlkfMzI7w64m+b4PqBMNHB05lH21PVxJo2/fBXxV4hB38PcD+5AkI4FuETsAAAAASUVORK5CYII=";
 Editor.previousLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFZJREFUOMvdkskRgDAMA4lDwg2B7b9XOlge/KKvdsa25KFb5XlRvxXC/DNBEv8IFNjBgGdDgXtFgTyhwDXiQAUHCvwa4Uv6mR6UR+1led2mVonvl+tML45qCQNQLIx7AAAAAElFTkSuQmCC";Editor.nextLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA7fci493c0MW8uJ6CZks4MxQHEZL6ewAAAFRJREFUOMvd0skRgCAQBVEFwQ0V7fxzNQP6wI05v6pZ/kyj1b7FNgik2gQzzLcAwiUAigHOTwDHK4A1CmB5BJANJG1hQ9qafYcqFlZP3IFc9eVGrR+iIgkDQRUXIAAAAABJRU5ErkJggg==";
+Editor.refreshLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAErnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarVdrlispCP7PKmYJouJjOT7PuTuY5c+HZZJKOkmn+055UioiIB9ghca/fyb9g8dyDOQlppBDMHh89tkWDJI5nqNn49d7PXYvYX5Hp+uCBcmhd8c0jM1fQJfbhug3vd7TKbYtJ21Be+Ei0Klm1bb50hbk7EHnPae89xV/Os7+zWbXstRj6XHuI5zRBfKcJTscO4N3Ui0OFrjsitOxvsUqhTG2Li7KC9/RdfjgvOvowXembLq7dwWZsBnCg482neW575aHzhbxTfPdQsgmmvNz9t3sac5xnK74AE8F2oe6HGWNwAh3ere2BbSIn2AcV8toCUdsQKwDzYrWiDNbeHuy586FJ4/VN24w0dthI3prm3WLlly02bYFitfG00bA08kl4NGAmgPZXm3hpTcvfY0TNHcGp2UIY+z40ugZ8TftKmhODV1mk66+gl1WYxpmKHL6BhcA4bl9Ksu/q9EpbswJWAcEZbk54YDF1ENEFb7Flls4O/CJ8WSO1ODYtwC4CLoFxiCiPZvATjiwidZGZvgxAZ8Cy63ztgIBFrGdaQIb5wLASVZ1Y0/kxWvFHmSUFgAhLiBJkiYQwPJeED/RJ8RQESeeRCRIlCRZSnDBBwkhxKA1qkQXfZQYYowp5liSSz5JCimmlHIq2WaHEiY55Eg55ZxLgdIC0QW7CzhKqba66qvUUGNNNdfSED7NN2mhxZZabqXb7jrSv4ceqaeeexk8EErDDxlhxJFGHmUi1qabfsoMM8408yxX1Daq96jxA3LvUeONmiLmF1+8oQZyjBcRrOVEFDMgZj0D8agIIKCtYmYSe28VOcXMZIukEAvUWBSczooYEPSDrUy+YndD7i1uJP5HuNlXyJFC938gRwrdRu4rbk9Q62XdKG4BpFmoPjVuorCBYaRiU9E76eN+1llySMahUBZbB82pgxvh6TwdhFiWpMXw2NOrhZf9rO0Qi4PWEeDRtUI/EPHa7t4C1eaKMs7aS2ldb2DEQ6kIC1z0DVeyxD6cTBNFL2hh/9ALkBDca+yrUrGf/6an1wwZVhjExuxr8MUMh2GoHQfSQ9KPHP2mfymI4VJ8HGm4rMEpiNTXZSZzcfpaopeBV8fiAcQqSV5EJmR1FVooLeaPY9vrroDtYw1OR3OXmHgdgcl85iO1p6ZcRi+f+/aLC2kdE9KSG2uAcjqfRJ32Dkcy9sXR6YEAFSGvwEFA66E/jUg6RV5GInA9mQBRqMYdieL2tCNhTjNJiEy9lj2O9nEmXDVhxppfvAzYM7qfvpmNHjleBH1VQyt5D14l/3pGS1Uz8qN0fyKS7qf2KELuAvwialVag+f16OjpgXACfg3f7b0pGxKpofK913aUye8spG/VHb55bxnEUur6h09C+TxrV3KOPbgs0Lv8PBWvxxukzAWSP8XRCdIhDhqs1Sv0fQnYKo5kXwv0ztyf9PSLUv+00tFH1nxgK/29LUdP20PXq8JoEd82XGZr//0nAIq/bPpxecDZaeA77bNvo+sVBTkOcvjGQT/7vHrd0129HqUcF9elfOOrJDaO/vvkpde5iu/FjH/P/wGZHRMfLTnvnwAAAAJiS0dEAP+Hj8y/AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4wIFCRsCWfPx5wAAAnVJREFUSMfNlT1oU1EYht+TpLG2tqJVCqI2BXFQEcGiKGjRwUlKlVIFcalCHXTwb3FxEAedHDp1C0IFoTg4VQS1KlJLxani0oiKIk1r0/8kvedxyM1tbm6uVETwu9t33vc939/5rvSXZsIOrExEEUWErGyW6pULZBVfoz06rBZtUZ2sJvRRr/VSKeMUMfNabeapDZKnRA1dDLOI3yzjPGAfkcuSMLTxiP2ZYNjs4glLhNkMd1mP4SSTwD3rj98ajvGZ35vlOZf4CUCPNVKsSHdkjqpPDVp2/NAnpRVVoxJqcKtl1KpDigRy/ya2M+bds8QgnWwijsFQTTMXGMWWRdNTkgJx+r2DDNepyfkucMRGesuq4xNoI+e6p+kkGKIwnCYbIkCcAdfpcCOE3s5kaArsJOM631MXpA+J4wG6KxCRpqSDqi8oqdfOBAVapA6tC7hnpWIbR3RbkrSgh9EK8x4Vd5RSlc+5qPvDeNNv3S8V8mSGPETxczSk/8NMoUll+UnYfLQiwcNCPlIoIkZXdL5svqcj3XoXpC9JHbolI2nKdOhLQSrGcKDHDl0V71/FKxcxxoaiM8ZIgJ6stG7mRDt5F5PEhAlYktQH6RmRYNTFZDmyHFa5QIrNQXpOJHjhYR5TFS5gGeQA0YWS0hHnBB88RJq9UwoXAJijnzPsZisJWujmmffcIctFSrehJ2D57ts6llnGSbPgk85xE//UuAIOSZro86pc2TJcJTB0UQZwCpWnmnOkAtuv2Nw3tFZYNzmxjVPFvlvRyDXeMl0i45DmKWepza/s35hXrEbN2qEmrZWjCaU0qq8m98cvLScrp7B4/p39Au+cBBvd+o3cAAAAAElFTkSuQmCC";
+Editor.backLargeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADxnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjatVZbkuQoDPznFHsEJCEexwEDEXuDOf4mmHq7e6vcPUWUhWUhJZmAbdqff7v5Bz+2wsZpiD55b/FzySXO6ES7/3ZL1s3r/PF6hPsHv7k+YLgEVvZb31Z8hl9vA4Jb/vLoN2FbeeJKtB5cEsqoPKqtuLgSCe9+WvcmrXHZ3U1n/bvf09JK/nzvAsioaidH3ITE4hpHFQECSZJl9MdVeXgIfZ5+lXTMnbl2n8i79p64s3n55ZEKY/0K8E8cLT/pMXeToXtEdKv88KDma4lX7nqNvbd9dtl5MOXNmtRlKrOHwAIqZQ7zaAF/RT/MltAiprhBsQo1C9pmKBGD7U6OKmXq1KbdaANEx40DLPPGMn1RAifepihuNOocIEM1EqHHBtUEbr5ioVk3zXobRVSuhEgmJCOMeGnmyHmmXRP1vu1LLV65Ai4eaxowhnLjiigIQn1xqpPf2czdurF3wgoU1ElzxASzLXuKonRbWzJ1FsSpdcbuW4NCXQlAEWorwGBFO7KeRMmTDcyBCDxG6JOBnMVxgQKkypVMhzYiHuJEHrUxJtCMZeXdjaMFQqh4CZAGGwViOadYP8FFrKGsos6oqtegUZNmL9559d4HP86oHCS4oMGHEGJIIUeJLmr0McQYU8yJk+AI0+RTMCmmlHJG0YzUGaMzInIuXKS4osWXUGJJJW9YPpvbdPNb2OKWtly5SsX2r74GU2NNNTdqWErNNW2+hRZbarljrXXprmv3PfTYU89X1Zaqj6rRk3Lfq0ZLtaGYm3HhphrcIVxS0DhOdGgGxdgRFA9DASxoHprZSM7xUG5oZhNjUyhDNdIhTqWhGBR0jVg7XbW7KfetbkbdR7rxV8qZId1vKGeGdEu5V90OVKt5vlFkCjR24eDUSsfBhoAWM8c83kmnrXl0lNaxsx+jejyR6KwtzbwiGLa08d75wdTeR/AMwJxFcBLRkQjDpuLmFlbC99H4nsDlh/arRKH26orT8d0ynDfLii8heRlmfgnQJREAgIOv0G327URnkUwG8BIZXyNPFJD2PfCVnW+t+XQA7ODhpbw5V//Vmp/g2FXYhTKTkh/jsfuCfA9PcTgz49wuDTtE89wr+8bhaKyM/bo/RZi/PvnQms8HytrA88ToBef0uDNPMQtdn5P4pIg5M40jdOYe3jG697gz59G8JDomb8WMN+89vAJ4dJTN/Aqcg0QD3hfg1mLcz+6F8TbW8C+RZP5H27fR/TWOPkZ34erbqeFrKJn/AEE/tAwjCLp7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAuJAAALiQE3ycutAAAAB3RJTUUH4wIFCR4CJIQFogAAAWRJREFUWMPFlztLA0EURjdqJNk0gTQhkEdjYWdhIyI2YusPsbOztbFKI4ggaSxSa6FdQIgQtFKwCwhxEQI2isEHWeYeC2fxkkYLvfvBsM0w5yyX/YYNgn8IsAGMgFZgHWANeOcrH9bwFeCV72xawpcm4NuW8AXgWcGblvA5YKjgB5bwOhApeMsSXgUGCt52zmVM4CJSBvoKfioiWas3LwI3Cn4O5K3gIdBT8AsgtIR3FfwSKFjNPAd0FPwWKFnBZ4ATBb8DKpafW1PB74Ga9QUz8vAIaPz1+VO/2DP2z6xf5vf7jhpBBNRNBZxzGaCtJAZA1VRCRGaBMyXRF5Gy9SjyvnaTXANFa4nQ12+SnlkVK4kCcKUkumlIlHwdJ+mISM5aouJrOcmxiExbS9R8PSc5iuPYvKgawIOSOEyjLeeBRyWxn4bEIvCiJHbTkFie+DvaSkNiFXjzAuMgjQDrwBOw99PeT/vzU1TSg3fFAAAAAElFTkSuQmCC";
 Editor.ctrlKey=mxClient.IS_MAC?"Cmd":"Ctrl";Editor.popupsAllowed=!0;mxUtils.extend(Editor,mxEventSource);Editor.prototype.originalNoForeignObject=mxClient.NO_FO;Editor.prototype.transparentImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhMAAwAIAAAP///wAAACH5BAEAAAAALAAAAAAwADAAAAIxhI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8egpAAA7":IMAGE_PATH+"/transparent.gif";Editor.prototype.extendCanvas=!0;Editor.prototype.chromeless=!1;Editor.prototype.cancelFirst=!0;
 Editor.prototype.enabled=!0;Editor.prototype.filename=null;Editor.prototype.modified=!1;Editor.prototype.autosave=!0;Editor.prototype.initialTopSpacing=0;Editor.prototype.appName=document.title;Editor.prototype.editBlankUrl=window.location.protocol+"//"+window.location.host+"/";Editor.prototype.defaultGraphOverflow="hidden";Editor.prototype.init=function(){};Editor.prototype.isChromelessView=function(){return this.chromeless};Editor.prototype.setAutosave=function(a){this.autosave=a;this.fireEvent(new mxEventObject("autosaveChanged"))};
 Editor.prototype.getEditBlankUrl=function(a){return this.editBlankUrl+a};
@@ -2000,11 +2002,11 @@ Editor.prototype.setFilename=function(a){this.filename=a};
 Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,e){b.undoableEditHappened(e.getProperty("edit"))};var e=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,e);a.getView().addListener(mxEvent.UNDO,e);e=function(b,e){var c=a.getSelectionCellsForChanges(e.getProperty("edit").changes);a.getModel();for(var k=[],r=0;r<c.length;r++)null!=a.view.getState(c[r])&&k.push(c[r]);a.setSelectionCells(k)};
 b.addListener(mxEvent.UNDO,e);b.addListener(mxEvent.REDO,e);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,e,c,k,m,q,r,v,z){var d=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(d=80);e+=d;c+=d;var f=e,l=c,n=mxUtils.getDocumentSize(),g=n.height,p=Math.max(1,Math.round((n.width-e-64)/2)),B=Math.max(1,Math.round((g-c-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");e=null!=document.body?Math.min(e,document.body.scrollWidth-64):e;c=Math.min(c,g-64);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=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));n=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=n.x+"px";this.bg.style.top=n.y+"px";p+=n.x;B+=n.y;k&&document.body.appendChild(this.bg);var x=a.createDiv(v?"geTransDialog":"geDialog");k=this.getPosition(p,B,e,c);p=k.x;B=k.y;x.style.width=
-e+"px";x.style.height=c+"px";x.style.left=p+"px";x.style.top=B+"px";x.style.zIndex=this.zIndex;x.appendChild(b);document.body.appendChild(x);!r&&b.clientHeight>x.clientHeight-64&&(b.style.overflowY="auto");m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=B+14+"px",m.style.left=p+e+38-d+"px",m.style.zIndex=this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
-document.body.appendChild(m),this.dialogImg=m,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(d){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=z){var n=z();null!=n&&(f=e=n.w,l=c=n.h)}n=mxUtils.getDocumentSize();g=n.height;this.bg.style.height=g+"px";p=Math.max(1,Math.round((n.width-e-64)/2));B=Math.max(1,Math.round((g-c-a.footerHeight)/3));e=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;c=Math.min(l,g-64);n=this.getPosition(p,
-B,e,c);p=n.x;B=n.y;x.style.left=p+"px";x.style.top=B+"px";x.style.width=e+"px";x.style.height=c+"px";!r&&b.clientHeight>x.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=B+14+"px",this.dialogImg.style.left=p+e+38-d+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=x;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
+function Dialog(a,b,e,c,k,m,q,r,v,z){var d=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(d=80);e+=d;c+=d;var f=e,l=c,p=mxUtils.getDocumentSize(),g=p.height,n=Math.max(1,Math.round((p.width-e-64)/2)),A=Math.max(1,Math.round((g-c-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");e=null!=document.body?Math.min(e,document.body.scrollWidth-64):e;c=Math.min(c,g-64);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=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));p=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=p.x+"px";this.bg.style.top=p.y+"px";n+=p.x;A+=p.y;k&&document.body.appendChild(this.bg);var y=a.createDiv(v?"geTransDialog":"geDialog");k=this.getPosition(n,A,e,c);n=k.x;A=k.y;y.style.width=
+e+"px";y.style.height=c+"px";y.style.left=n+"px";y.style.top=A+"px";y.style.zIndex=this.zIndex;y.appendChild(b);document.body.appendChild(y);!r&&b.clientHeight>y.clientHeight-64&&(b.style.overflowY="auto");m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=A+14+"px",m.style.left=n+e+38-d+"px",m.style.zIndex=this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),
+document.body.appendChild(m),this.dialogImg=m,mxEvent.addGestureListeners(this.bg,null,null,mxUtils.bind(this,function(d){a.hideDialog(!0)})));this.resizeListener=mxUtils.bind(this,function(){if(null!=z){var p=z();null!=p&&(f=e=p.w,l=c=p.h)}p=mxUtils.getDocumentSize();g=p.height;this.bg.style.height=g+"px";n=Math.max(1,Math.round((p.width-e-64)/2));A=Math.max(1,Math.round((g-c-a.footerHeight)/3));e=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;c=Math.min(l,g-64);p=this.getPosition(n,
+A,e,c);n=p.x;A=p.y;y.style.left=n+"px";y.style.top=A+"px";y.style.width=e+"px";y.style.height=c+"px";!r&&b.clientHeight>y.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=A+14+"px",this.dialogImg.style.left=n+e+38-d+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=y;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1;
 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+
@@ -2014,8 +2016,8 @@ Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoA
 Dialog.prototype.unlockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCN0QxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCN0UxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3QjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI3QzE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkKMpVwAAAAYUExURZmZmbKysr+/v6ysrOXl5czMzLGxsf///zHN5lwAAAAIdFJOU/////////8A3oO9WQAAADxJREFUeNpUzFESACAEBNBVsfe/cZJU+8Mzs8CIABCidtfGOndnYsT40HDSiCcbPdoJo10o9aI677cpwACRoAF3dFNlswAAAABJRU5ErkJggg==":IMAGE_PATH+
 "/unlocked.png";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 PrintDialog=function(a,b){this.create(a,b)};
-PrintDialog.prototype.create=function(a){function b(a){var b=r.checked||z.checked,c=parseInt(f.value)/100;isNaN(c)&&(c=1,f.value="100%");var c=.75*c,l=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,n=1/e.pageScale;if(b){var t=r.checked?1:parseInt(d.value);isNaN(t)||(n=mxUtils.getScaleForPageCount(t,e,l))}e.getGraphBounds();var y=t=0,l=mxRectangle.fromRectangle(l);l.width=Math.ceil(l.width*c);l.height=Math.ceil(l.height*c);n*=c;!b&&e.pageVisible?(c=e.getPageLayout(),t-=c.x*l.width,y-=c.y*l.height):
-b=!0;b=PrintDialog.createPrintPreview(e,n,l,0,t,y,b);b.open();a&&PrintDialog.printPreview(b)}var e=a.editor.graph,c,k,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var q=document.createElement("tbody");c=document.createElement("tr");var r=document.createElement("input");r.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(r);var v=document.createElement("span");mxUtils.write(v," "+mxResources.get("fitPage"));
+PrintDialog.prototype.create=function(a){function b(a){var b=r.checked||z.checked,c=parseInt(f.value)/100;isNaN(c)&&(c=1,f.value="100%");var c=.75*c,l=e.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,p=1/e.pageScale;if(b){var t=r.checked?1:parseInt(d.value);isNaN(t)||(p=mxUtils.getScaleForPageCount(t,e,l))}e.getGraphBounds();var x=t=0,l=mxRectangle.fromRectangle(l);l.width=Math.ceil(l.width*c);l.height=Math.ceil(l.height*c);p*=c;!b&&e.pageVisible?(c=e.getPageLayout(),t-=c.x*l.width,x-=c.y*l.height):
+b=!0;b=PrintDialog.createPrintPreview(e,p,l,0,t,x,b);b.open();a&&PrintDialog.printPreview(b)}var e=a.editor.graph,c,k,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var q=document.createElement("tbody");c=document.createElement("tr");var r=document.createElement("input");r.setAttribute("type","checkbox");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";k.appendChild(r);var v=document.createElement("span");mxUtils.write(v," "+mxResources.get("fitPage"));
 k.appendChild(v);mxEvent.addListener(v,"click",function(a){r.checked=!r.checked;z.checked=!r.checked;mxEvent.consume(a)});mxEvent.addListener(r,"change",function(){z.checked=!r.checked});c.appendChild(k);q.appendChild(c);c=c.cloneNode(!1);var z=document.createElement("input");z.setAttribute("type","checkbox");k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(z);v=document.createElement("span");mxUtils.write(v," "+mxResources.get("posterPrint")+":");k.appendChild(v);mxEvent.addListener(v,
 "click",function(a){z.checked=!z.checked;r.checked=!z.checked;mxEvent.consume(a)});c.appendChild(k);var d=document.createElement("input");d.setAttribute("value","1");d.setAttribute("type","number");d.setAttribute("min","1");d.setAttribute("size","4");d.setAttribute("disabled","disabled");d.style.width="50px";k=document.createElement("td");k.style.fontSize="10pt";k.appendChild(d);mxUtils.write(k," "+mxResources.get("pages")+" (max)");c.appendChild(k);q.appendChild(c);mxEvent.addListener(z,"change",
 function(){z.checked?d.removeAttribute("disabled"):d.setAttribute("disabled","disabled");r.checked=!z.checked});c=c.cloneNode(!1);k=document.createElement("td");mxUtils.write(k,mxResources.get("pageScale")+":");c.appendChild(k);k=document.createElement("td");var f=document.createElement("input");f.setAttribute("value","100 %");f.setAttribute("size","5");f.style.width="50px";k.appendChild(f);c.appendChild(k);q.appendChild(c);c=document.createElement("tr");k=document.createElement("td");k.colSpan=2;
@@ -2023,21 +2025,21 @@ k.style.paddingTop="20px";k.setAttribute("align","right");v=mxUtils.button(mxRes
 k.appendChild(v);c.appendChild(k);q.appendChild(c);m.appendChild(q);this.container=m};PrintDialog.printPreview=function(a){if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}};
 PrintDialog.createPrintPreview=function(a,b,e,c,k,m,q){b=new mxPrintPreview(a,b,e,c,k,m);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=q;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var r=b.writeHead;b.writeHead=function(a){r.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln("  body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b};
 PrintDialog.previewEnabled=!0;
-var PageSetupDialog=function(a){function b(){null==d||d==mxConstants.NONE?(z.style.backgroundColor="",z.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(z.style.backgroundColor=d,z.style.backgroundImage="")}function e(){null==n?(l.removeAttribute("title"),l.style.fontSize="",l.innerHTML=mxResources.get("change")+"..."):(l.setAttribute("title",n.src),l.style.fontSize="11px",l.innerHTML=n.src.substring(0,42)+"...")}var c=a.editor.graph,k,m,q=document.createElement("table");q.style.width=
+var PageSetupDialog=function(a){function b(){null==d||d==mxConstants.NONE?(z.style.backgroundColor="",z.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(z.style.backgroundColor=d,z.style.backgroundImage="")}function e(){null==p?(l.removeAttribute("title"),l.style.fontSize="",l.innerHTML=mxResources.get("change")+"..."):(l.setAttribute("title",p.src),l.style.fontSize="11px",l.innerHTML=p.src.substring(0,42)+"...")}var c=a.editor.graph,k,m,q=document.createElement("table");q.style.width=
 "100%";q.style.height="100%";var r=document.createElement("tbody");k=document.createElement("tr");m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("paperSize")+":");k.appendChild(m);m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";var v=PageSetupDialog.addPageFormatPanel(m,"pagesetupdialog",c.pageFormat);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");
 mxUtils.write(m,mxResources.get("background")+":");k.appendChild(m);m=document.createElement("td");m.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var z=document.createElement("button");z.style.width="18px";z.style.height="18px";z.style.marginRight="20px";z.style.backgroundPosition="center center";z.style.backgroundRepeat="no-repeat";var d=c.background;b();mxEvent.addListener(z,"click",function(f){a.pickColor(d||"none",function(a){d=a;b()});mxEvent.consume(f)});
 m.appendChild(z);mxUtils.write(m,mxResources.get("gridSize")+":");var f=document.createElement("input");f.setAttribute("type","number");f.setAttribute("min","0");f.style.width="40px";f.style.marginLeft="6px";f.value=c.getGridSize();m.appendChild(f);mxEvent.addListener(f,"change",function(){var a=parseInt(f.value);f.value=Math.max(1,isNaN(a)?c.getGridSize():a)});k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");mxUtils.write(m,mxResources.get("image")+
-":");k.appendChild(m);m=document.createElement("td");var l=document.createElement("a");l.style.textDecoration="underline";l.style.cursor="pointer";l.style.color="#a0a0a0";var n=c.backgroundImage;mxEvent.addListener(l,"click",function(d){a.showBackgroundImageDialog(function(a){n=a;e()});mxEvent.consume(d)});e();m.appendChild(l);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var g=
-mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&m.appendChild(g);var p=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c.gridSize!==f.value&&c.setGridSize(parseInt(f.value));var b=new ChangePageSetup(a,d,n,v.get());b.ignoreColor=c.background==d;b.ignoreImage=(null!=c.backgroundImage?c.backgroundImage.src:null)===(null!=n?n.src:null);c.pageFormat.width==b.previousFormat.width&&c.pageFormat.height==b.previousFormat.height&&
-b.ignoreColor&&b.ignoreImage||c.model.execute(b)});p.className="geBtn gePrimaryBtn";m.appendChild(p);a.editor.cancelFirst||m.appendChild(g);k.appendChild(m);r.appendChild(k);q.appendChild(r);this.container=q};
+":");k.appendChild(m);m=document.createElement("td");var l=document.createElement("a");l.style.textDecoration="underline";l.style.cursor="pointer";l.style.color="#a0a0a0";var p=c.backgroundImage;mxEvent.addListener(l,"click",function(d){a.showBackgroundImageDialog(function(a){p=a;e()});mxEvent.consume(d)});e();m.appendChild(l);k.appendChild(m);r.appendChild(k);k=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var g=
+mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&m.appendChild(g);var n=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c.gridSize!==f.value&&c.setGridSize(parseInt(f.value));var b=new ChangePageSetup(a,d,p,v.get());b.ignoreColor=c.background==d;b.ignoreImage=(null!=c.backgroundImage?c.backgroundImage.src:null)===(null!=p?p.src:null);c.pageFormat.width==b.previousFormat.width&&c.pageFormat.height==b.previousFormat.height&&
+b.ignoreColor&&b.ignoreImage||c.model.execute(b)});n.className="geBtn gePrimaryBtn";m.appendChild(n);a.editor.cancelFirst||m.appendChild(g);k.appendChild(m);r.appendChild(k);q.appendChild(r);this.container=q};
 PageSetupDialog.addPageFormatPanel=function(a,b,e,c){function k(a,b,c){if(c||f!=document.activeElement&&l!=document.activeElement){a=!1;for(b=0;b<g.length;b++)c=g[b],t?"custom"==c.key&&(r.value=c.key,t=!1):null!=c.format&&("a4"==c.key?826==e.width?(e=mxRectangle.fromRectangle(e),e.width=827):826==e.height&&(e=mxRectangle.fromRectangle(e),e.height=827):"a5"==c.key&&(584==e.width?(e=mxRectangle.fromRectangle(e),e.width=583):584==e.height&&(e=mxRectangle.fromRectangle(e),e.height=583)),e.width==c.format.width&&
 e.height==c.format.height?(r.value=c.key,m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0,q.removeAttribute("checked"),q.defaultChecked=!1,q.checked=!1,a=!0):e.width==c.format.height&&e.height==c.format.width&&(r.value=c.key,m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1,q.setAttribute("checked","checked"),q.defaultChecked=!0,a=q.checked=!0));a?(v.style.display="",d.style.display="none"):(f.value=e.width/100,l.value=e.height/100,m.setAttribute("checked","checked"),
 r.value="custom",v.style.display="none",d.style.display="")}}b="format-"+b;var m=document.createElement("input");m.setAttribute("name",b);m.setAttribute("type","radio");m.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",b);q.setAttribute("type","radio");q.setAttribute("value","landscape");var r=document.createElement("select");r.style.marginBottom="8px";r.style.width="202px";var v=document.createElement("div");v.style.marginLeft="4px";v.style.width="210px";
 v.style.height="24px";m.style.marginRight="6px";v.appendChild(m);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));v.appendChild(b);q.style.marginLeft="10px";q.style.marginRight="6px";v.appendChild(q);var z=document.createElement("span");z.style.width="100px";mxUtils.write(z,mxResources.get("landscape"));v.appendChild(z);var d=document.createElement("div");d.style.marginLeft="4px";d.style.width="210px";d.style.height="24px";var f=document.createElement("input");
-f.setAttribute("size","7");f.style.textAlign="right";d.appendChild(f);mxUtils.write(d," in x ");var l=document.createElement("input");l.setAttribute("size","7");l.style.textAlign="right";d.appendChild(l);mxUtils.write(d," in");v.style.display="none";d.style.display="none";for(var n={},g=PageSetupDialog.getFormats(),p=0;p<g.length;p++){var B=g[p];n[B.key]=B;var x=document.createElement("option");x.setAttribute("value",B.key);mxUtils.write(x,B.title);r.appendChild(x)}var t=!1;k();a.appendChild(r);mxUtils.br(a);
-a.appendChild(v);a.appendChild(d);var y=e,u=function(a,b){var g=n[r.value];null!=g.format?(f.value=g.format.width/100,l.value=g.format.height/100,d.style.display="none",v.style.display=""):(v.style.display="none",d.style.display="");g=parseFloat(f.value);if(isNaN(g)||0>=g)f.value=e.width/100;g=parseFloat(l.value);if(isNaN(g)||0>=g)l.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(f.value)),Math.floor(100*parseFloat(l.value)));"custom"!=r.value&&q.checked&&(g=new mxRectangle(0,0,
-g.height,g.width));b&&t||g.width==y.width&&g.height==y.height||(y=g,null!=c&&c(y))};mxEvent.addListener(b,"click",function(a){m.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(z,"click",function(a){q.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(f,"blur",u);mxEvent.addListener(f,"click",u);mxEvent.addListener(l,"blur",u);mxEvent.addListener(l,"click",u);mxEvent.addListener(q,"change",u);mxEvent.addListener(m,"change",u);mxEvent.addListener(r,"change",function(a){t="custom"==r.value;
-u(a,!0)});u();return{set:function(a){e=a;k(null,null,!0)},get:function(){return y},widthInput:f,heightInput:l}};
+f.setAttribute("size","7");f.style.textAlign="right";d.appendChild(f);mxUtils.write(d," in x ");var l=document.createElement("input");l.setAttribute("size","7");l.style.textAlign="right";d.appendChild(l);mxUtils.write(d," in");v.style.display="none";d.style.display="none";for(var p={},g=PageSetupDialog.getFormats(),n=0;n<g.length;n++){var A=g[n];p[A.key]=A;var y=document.createElement("option");y.setAttribute("value",A.key);mxUtils.write(y,A.title);r.appendChild(y)}var t=!1;k();a.appendChild(r);mxUtils.br(a);
+a.appendChild(v);a.appendChild(d);var x=e,u=function(a,b){var g=p[r.value];null!=g.format?(f.value=g.format.width/100,l.value=g.format.height/100,d.style.display="none",v.style.display=""):(v.style.display="none",d.style.display="");g=parseFloat(f.value);if(isNaN(g)||0>=g)f.value=e.width/100;g=parseFloat(l.value);if(isNaN(g)||0>=g)l.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(f.value)),Math.floor(100*parseFloat(l.value)));"custom"!=r.value&&q.checked&&(g=new mxRectangle(0,0,
+g.height,g.width));b&&t||g.width==x.width&&g.height==x.height||(x=g,null!=c&&c(x))};mxEvent.addListener(b,"click",function(a){m.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(z,"click",function(a){q.checked=!0;u(a);mxEvent.consume(a)});mxEvent.addListener(f,"blur",u);mxEvent.addListener(f,"click",u);mxEvent.addListener(l,"blur",u);mxEvent.addListener(l,"click",u);mxEvent.addListener(q,"change",u);mxEvent.addListener(m,"change",u);mxEvent.addListener(r,"change",function(a){t="custom"==r.value;
+u(a,!0)});u();return{set:function(a){e=a;k(null,null,!0)},get:function(){return x},widthInput:f,heightInput:l}};
 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 (279 mm x 432 mm)",format:new mxRectangle(0,0,1100,1700)},{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:"custom",title:mxResources.get("custom"),format:null}]};
 (function(){mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph;if(null!=a.container&&!a.transparentBackground){if(a.pageVisible){var b=this.getBackgroundPageBounds();if(null==this.backgroundPageShape){for(var c=a.container.firstChild;null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c=c.nextSibling;null!=c&&(this.backgroundPageShape=this.createBackgroundPageShape(b),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!mxClient.IS_QUIRKS,this.backgroundPageShape.dialect=
@@ -2047,12 +2049,12 @@ null);this.validateBackgroundStyles()}};mxGraphView.prototype.validateBackground
 d="url("+this.gridImage+")";var l=c=0;null!=a.view.backgroundPageShape&&(l=this.getBackgroundPageBounds(),c=1+l.x,l=1+l.y);f=-Math.round(f-mxUtils.mod(this.translate.x*this.scale-c,f))+"px "+-Math.round(f-mxUtils.mod(this.translate.y*this.scale-l,f))+"px"}c=a.view.canvas;null!=c.ownerSVGElement&&(c=c.ownerSVGElement);null!=a.view.backgroundPageShape?(a.view.backgroundPageShape.node.style.backgroundPosition=f,a.view.backgroundPageShape.node.style.backgroundImage=d,a.view.backgroundPageShape.node.style.backgroundColor=
 b,a.container.className="geDiagramContainer geDiagramBackdrop",c.style.backgroundImage="none",c.style.backgroundColor=""):(a.container.className="geDiagramContainer",c.style.backgroundPosition=f,c.style.backgroundColor=b,c.style.backgroundImage=d)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var c=this.gridSteps*b,d=[],f=1;f<this.gridSteps;f++){var l=f*b;d.push("M 0 "+l+" L "+c+" "+l+" M "+l+" 0 L "+l+" "+c)}return'<svg width="'+
 c+'" height="'+c+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+c+'" height="'+c+'" patternUnits="userSpaceOnUse"><path d="'+d.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+c+" 0 L 0 0 0 "+c+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,c){a.apply(this,arguments);if(null!=this.shiftPreview1){var e=
-this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var d=this.gridSize*this.view.scale*this.view.gridSteps,d=-Math.round(d-mxUtils.mod(this.view.translate.x*this.view.scale+b,d))+"px "+-Math.round(d-mxUtils.mod(this.view.translate.y*this.view.scale+c,d))+"px";e.style.backgroundPosition=d}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,f=this.view.translate,e=this.pageFormat,n=d*this.pageScale,g=this.view.getBackgroundPageBounds();b=g.width;c=g.height;var p=
-new mxRectangle(d*f.x,d*f.y,e.width*n,e.height*n),k=(a=a&&Math.min(p.width,p.height)>this.minPageBreakDist)?Math.ceil(c/p.height)-1:0,r=a?Math.ceil(b/p.width)-1:0,t=g.x+b,y=g.y+c;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<r&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var d=a==this.horizontalPageBreaks?k:r,b=0;b<=d;b++){var f=a==this.horizontalPageBreaks?[new mxPoint(Math.round(g.x),Math.round(g.y+(b+1)*p.height)),
-new mxPoint(Math.round(t),Math.round(g.y+(b+1)*p.height))]:[new mxPoint(Math.round(g.x+(b+1)*p.width),Math.round(g.y)),new mxPoint(Math.round(g.x+(b+1)*p.width),Math.round(y))];null!=a[b]?(a[b].points=f,a[b].redraw()):(f=new mxPolyline(f,this.pageBreakColor),f.dialect=this.dialect,f.isDashed=this.pageBreakDashed,f.pointerEvents=!1,f.init(this.view.backgroundPane),f.redraw(),a[b]=f)}for(b=d;b<a.length;b++)a[b].destroy();a.splice(d,a.length-d)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
+this.view.canvas;null!=e.ownerSVGElement&&(e=e.ownerSVGElement);var d=this.gridSize*this.view.scale*this.view.gridSteps,d=-Math.round(d-mxUtils.mod(this.view.translate.x*this.view.scale+b,d))+"px "+-Math.round(d-mxUtils.mod(this.view.translate.y*this.view.scale+c,d))+"px";e.style.backgroundPosition=d}};mxGraph.prototype.updatePageBreaks=function(a,b,c){var d=this.view.scale,f=this.view.translate,e=this.pageFormat,p=d*this.pageScale,g=this.view.getBackgroundPageBounds();b=g.width;c=g.height;var n=
+new mxRectangle(d*f.x,d*f.y,e.width*p,e.height*p),k=(a=a&&Math.min(n.width,n.height)>this.minPageBreakDist)?Math.ceil(c/n.height)-1:0,y=a?Math.ceil(b/n.width)-1:0,t=g.x+b,x=g.y+c;null==this.horizontalPageBreaks&&0<k&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<y&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var d=a==this.horizontalPageBreaks?k:y,b=0;b<=d;b++){var f=a==this.horizontalPageBreaks?[new mxPoint(Math.round(g.x),Math.round(g.y+(b+1)*n.height)),
+new mxPoint(Math.round(t),Math.round(g.y+(b+1)*n.height))]:[new mxPoint(Math.round(g.x+(b+1)*n.width),Math.round(g.y)),new mxPoint(Math.round(g.x+(b+1)*n.width),Math.round(x))];null!=a[b]?(a[b].points=f,a[b].redraw()):(f=new mxPolyline(f,this.pageBreakColor),f.dialect=this.dialect,f.isDashed=this.pageBreakDashed,f.pointerEvents=!1,f.init(this.view.backgroundPane),f.redraw(),a[b]=f)}for(b=d;b<a.length;b++)a[b].destroy();a.splice(d,a.length-d)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)};
 var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,c,e){for(var d=0;d<c.length;d++)if(this.graph.getModel().isVertex(c[d])){var f=this.graph.getCellGeometry(c[d]);if(null!=f&&f.relative)return!1}return b.apply(this,arguments)};var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=e.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,c){return this.isConnecting()?
-!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,f=this.graph.pageScale,e=d.width*f,d=d.height*f,f=Math.floor(Math.min(0,b)/e),n=Math.floor(Math.min(0,
-c)/d);return new mxRectangle(this.scale*(this.translate.x+f*e),this.scale*(this.translate.y+n*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/e)-f)*e,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-n)*d)};var c=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){c.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=
+!0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,c=0<a.height?a.y/this.scale-this.translate.y:0,d=this.graph.pageFormat,f=this.graph.pageScale,e=d.width*f,d=d.height*f,f=Math.floor(Math.min(0,b)/e),p=Math.floor(Math.min(0,
+c)/d);return new mxRectangle(this.scale*(this.translate.x+f*e),this.scale*(this.translate.y+p*d),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/e)-f)*e,this.scale*(Math.ceil(Math.max(1,c+a.height/this.scale)/d)-p)*d)};var c=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){c.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=
 a+"px",this.view.backgroundPageShape.node.style.marginTop=b+"px")};var k=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(a,b,c,d,f,e){var l=k.apply(this,arguments);null==e||e||mxEvent.addListener(l,"mousedown",function(a){mxEvent.consume(a)});return l};var m=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(a){var b=this.graph.getModel(),c=b.getParent(this.graph.getSelectionCell()),d=m.apply(this,arguments),f=b.getParent(d);
 if(null==c||c!=d&&c!=f)for(;!this.graph.isCellSelected(d)&&!this.graph.isCellSelected(f)&&b.isVertex(f)&&!this.graph.isContainer(f);)d=f,f=this.graph.getModel().getParent(d);return d};var q=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(a,b){var c=q.apply(this,arguments);if(!c)for(var d=this.graph.getModel(),f=d.getParent(a);null!=f;){if(this.graph.isCellSelected(f)&&d.isVertex(f)){c=!0;break}f=d.getParent(f)}return c};mxGraphHandler.prototype.selectDelayed=
 function(a){if(!this.graph.popupMenuHandler.isPopupTrigger(a)){var b=a.getCell();null==b&&(b=this.cell);var c=this.graph.view.getState(b);if(null==c||!a.isSource(c.control))for(var c=this.graph.getModel(),d=c.getParent(b);!this.graph.isCellSelected(d)&&c.isVertex(d);)b=d,d=c.getParent(b);this.graph.selectCellForEvent(b,a.getEvent())}};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(a){a=a.getCell();for(var b=this.graph.getModel(),c=b.getParent(a);b.isVertex(c)&&!this.graph.isContainer(c);)this.graph.isCellSelected(c)&&
@@ -2063,17 +2065,17 @@ mxEvent.getSource(a);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)
 this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-d.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var m=!1,q=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(a,d){return m||q.apply(this,
 arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32==a.which?(m=!0,this.hoverIcons.reset(),c.container.style.cursor="move",c.isEditing()||mxEvent.getSource(a)!=c.container||mxEvent.consume(a)):mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0)});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){c.container.style.cursor="";m=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var r=c.panningHandler.isForcePanningEvent;
 c.panningHandler.isForcePanningEvent=function(a){return r.apply(this,arguments)||m||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var v=c.cellEditor.isStopEditingEvent;c.cellEditor.isStopEditingEvent=function(a){return v.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||
-mxClient.IS_SF&&mxEvent.isShiftDown(a))};var z=!1,d=null,f=null,l=null,n=mxUtils.bind(this,function(){if(null!=this.toolbar&&z!=c.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==l)this.toolbar.createTextToolbar();else{for(var g=0;g<l.length;g++)this.toolbar.container.appendChild(l[g]);this.toolbar.fontMenu=
-d;this.toolbar.sizeMenu=f}z=c.cellEditor.isContentEditing();d=a;f=e;l=b}}),g=this,p=c.cellEditor.startEditing;c.cellEditor.startEditing=function(){p.apply(this,arguments);n();if(c.cellEditor.isContentEditing()){var a=!1,d=function(){a||(a=!0,window.setTimeout(function(){for(var d=c.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;if(null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=g.toolbar)){var b=d.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length-
-1)&&(b=b.substring(0,b.length-1));g.toolbar.setFontName(b);g.toolbar.setFontSize(parseInt(d.fontSize))}a=!1},0))};mxEvent.addListener(c.cellEditor.textarea,"input",d);mxEvent.addListener(c.cellEditor.textarea,"touchend",d);mxEvent.addListener(c.cellEditor.textarea,"mouseup",d);mxEvent.addListener(c.cellEditor.textarea,"keyup",d);d()}};var B=c.cellEditor.stopEditing;c.cellEditor.stopEditing=function(a,d){B.apply(this,arguments);n()};c.container.setAttribute("tabindex","0");c.container.style.cursor=
-"default";if(window.self===window.top&&null!=c.container.parentNode)try{c.container.focus()}catch(S){}var x=c.fireMouseEvent;c.fireMouseEvent=function(a,d,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();x.apply(this,arguments)};c.popupMenuHandler.autoExpand=!0;null!=this.menus&&(c.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,d,b){this.menus.createPopupMenu(a,d,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){c.popupMenuHandler.hideMenu()}));this.keyHandler=
-this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var t="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),y="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var d=c.view.getState(a);if(null!=d){a=a.clone();a.style="";a=c.getCellStyle(a);var b=[],f=[],e;for(e in d.style)a[e]!=d.style[e]&&(b.push(d.style[e]),f.push(e));e=c.getModel().getStyle(d.cell);for(var g=null!=e?e.split(";"):[],l=0;l<
+mxClient.IS_SF&&mxEvent.isShiftDown(a))};var z=!1,d=null,f=null,l=null,p=mxUtils.bind(this,function(){if(null!=this.toolbar&&z!=c.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var e=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=e}a=this.toolbar.fontMenu;e=this.toolbar.sizeMenu;if(null==l)this.toolbar.createTextToolbar();else{for(var g=0;g<l.length;g++)this.toolbar.container.appendChild(l[g]);this.toolbar.fontMenu=
+d;this.toolbar.sizeMenu=f}z=c.cellEditor.isContentEditing();d=a;f=e;l=b}}),g=this,n=c.cellEditor.startEditing;c.cellEditor.startEditing=function(){n.apply(this,arguments);p();if(c.cellEditor.isContentEditing()){var a=!1,d=function(){a||(a=!0,window.setTimeout(function(){for(var d=c.getSelectedElement();null!=d&&d.nodeType!=mxConstants.NODETYPE_ELEMENT;)d=d.parentNode;if(null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=g.toolbar)){var b=d.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length-
+1)&&(b=b.substring(0,b.length-1));g.toolbar.setFontName(b);g.toolbar.setFontSize(parseInt(d.fontSize))}a=!1},0))};mxEvent.addListener(c.cellEditor.textarea,"input",d);mxEvent.addListener(c.cellEditor.textarea,"touchend",d);mxEvent.addListener(c.cellEditor.textarea,"mouseup",d);mxEvent.addListener(c.cellEditor.textarea,"keyup",d);d()}};var A=c.cellEditor.stopEditing;c.cellEditor.stopEditing=function(a,d){A.apply(this,arguments);p()};c.container.setAttribute("tabindex","0");c.container.style.cursor=
+"default";if(window.self===window.top&&null!=c.container.parentNode)try{c.container.focus()}catch(S){}var y=c.fireMouseEvent;c.fireMouseEvent=function(a,d,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();y.apply(this,arguments)};c.popupMenuHandler.autoExpand=!0;null!=this.menus&&(c.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a,d,b){this.menus.createPopupMenu(a,d,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){c.popupMenuHandler.hideMenu()}));this.keyHandler=
+this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var t="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),x="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){var d=c.view.getState(a);if(null!=d){a=a.clone();a.style="";a=c.getCellStyle(a);var b=[],f=[],e;for(e in d.style)a[e]!=d.style[e]&&(b.push(d.style[e]),f.push(e));e=c.getModel().getStyle(d.cell);for(var g=null!=e?e.split(";"):[],l=0;l<
 g.length;l++){var n=g[l],p=n.indexOf("=");0<=p&&(e=n.substring(0,p),n=n.substring(p+1),null!=a[e]&&"none"==n&&(b.push(n),f.push(e)))}c.getModel().isEdge(d.cell)?c.currentEdgeStyle={}:c.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",f,"values",b,"cells",[d.cell]))}};this.clearDefaultStyle=function(){c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",
-[],"cells",[]))};var u=["fontFamily","fontSize","fontColor"],A="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),D=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],u,["opacity"],["align"],["html"]];for(a=0;a<D.length;a++)for(b=0;b<D[a].length;b++)t.push(D[a][b]);for(a=0;a<y.length;a++)0>mxUtils.indexOf(t,
-y[a])&&t.push(y[a]);var U=function(a,d){var b=c.getModel();b.beginUpdate();try{if(d)for(var f=b.isEdge(n),e=f?c.currentEdgeStyle:c.currentVertexStyle,f=["fontSize","fontFamily","fontColor"],g=0;g<f.length;g++){var l=e[f[g]];null!=l&&c.setCellStyles(f[g],l,a)}else for(l=0;l<a.length;l++){for(var n=a[l],p=b.getStyle(n),u=null!=p?p.split(";"):[],J=t.slice(),g=0;g<u.length;g++){var k=u[g],B=k.indexOf("=");if(0<=B){var A=k.substring(0,B),x=mxUtils.indexOf(J,A);0<=x&&J.splice(x,1);for(var r=0;r<D.length;r++){var m=
-D[r];if(0<=mxUtils.indexOf(m,A))for(var q=0;q<m.length;q++){var S=mxUtils.indexOf(J,m[q]);0<=S&&J.splice(S,1)}}}}for(var e=(f=b.isEdge(n))?c.currentEdgeStyle:c.currentVertexStyle,U=b.getStyle(n),g=0;g<J.length;g++){var A=J[g],v=e[A];null==v||"shape"==A&&!f||f&&!(0>mxUtils.indexOf(y,A))||(U=mxUtils.setStyle(U,A,v))}b.setStyle(n,U)}}finally{b.endUpdate()}};c.addListener("cellsInserted",function(a,d){U(d.getProperty("cells"))});c.addListener("textInserted",function(a,d){U(d.getProperty("cells"),!0)});
+[],"cells",[]))};var u=["fontFamily","fontSize","fontColor"],D="edgeStyle startArrow startFill startSize endArrow endFill endSize jettySize orthogonalLoop".split(" "),B=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing jettySize orthogonalLoop".split(" "),["strokeColor","strokeWidth"],["fillColor","gradientColor"],u,["opacity"],["align"],["html"]];for(a=0;a<B.length;a++)for(b=0;b<B[a].length;b++)t.push(B[a][b]);for(a=0;a<x.length;a++)0>mxUtils.indexOf(t,
+x[a])&&t.push(x[a]);var U=function(a,d){var b=c.getModel();b.beginUpdate();try{if(d)for(var f=b.isEdge(n),e=f?c.currentEdgeStyle:c.currentVertexStyle,f=["fontSize","fontFamily","fontColor"],g=0;g<f.length;g++){var l=e[f[g]];null!=l&&c.setCellStyles(f[g],l,a)}else for(l=0;l<a.length;l++){for(var n=a[l],p=b.getStyle(n),u=null!=p?p.split(";"):[],J=t.slice(),g=0;g<u.length;g++){var k=u[g],A=k.indexOf("=");if(0<=A){var D=k.substring(0,A),y=mxUtils.indexOf(J,D);0<=y&&J.splice(y,1);for(var m=0;m<B.length;m++){var r=
+B[m];if(0<=mxUtils.indexOf(r,D))for(var q=0;q<r.length;q++){var S=mxUtils.indexOf(J,r[q]);0<=S&&J.splice(S,1)}}}}for(var e=(f=b.isEdge(n))?c.currentEdgeStyle:c.currentVertexStyle,U=b.getStyle(n),g=0;g<J.length;g++){var D=J[g],v=e[D];null==v||"shape"==D&&!f||f&&!(0>mxUtils.indexOf(x,D))||(U=mxUtils.setStyle(U,D,v))}b.setStyle(n,U)}}finally{b.endUpdate()}};c.addListener("cellsInserted",function(a,d){U(d.getProperty("cells"))});c.addListener("textInserted",function(a,d){U(d.getProperty("cells"),!0)});
 c.connectionHandler.addListener(mxEvent.CONNECT,function(a,d){var b=[d.getProperty("cell")];d.getProperty("terminalInserted")&&b.push(d.getProperty("terminal"));U(b)});this.addListener("styleChanged",mxUtils.bind(this,function(a,d){var b=d.getProperty("cells"),f=!1,e=!1;if(0<b.length)for(var g=0;g<b.length&&(f=c.getModel().isVertex(b[g])||f,!(e=c.getModel().isEdge(b[g])||e)||!f);g++);else e=f=!0;for(var b=d.getProperty("keys"),l=d.getProperty("values"),g=0;g<b.length;g++){var n=0<=mxUtils.indexOf(u,
-b[g]);if("strokeColor"!=b[g]||null!=l[g]&&"none"!=l[g])if(0<=mxUtils.indexOf(y,b[g]))e||0<=mxUtils.indexOf(A,b[g])?null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=l[g]:f&&0<=mxUtils.indexOf(t,b[g])&&(null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g]);else if(0<=mxUtils.indexOf(t,b[g])){if(f||n)null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g];if(e||n||0<=mxUtils.indexOf(A,b[g]))null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=
+b[g]);if("strokeColor"!=b[g]||null!=l[g]&&"none"!=l[g])if(0<=mxUtils.indexOf(x,b[g]))e||0<=mxUtils.indexOf(D,b[g])?null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=l[g]:f&&0<=mxUtils.indexOf(t,b[g])&&(null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g]);else if(0<=mxUtils.indexOf(t,b[g])){if(f||n)null==l[g]?delete c.currentVertexStyle[b[g]]:c.currentVertexStyle[b[g]]=l[g];if(e||n||0<=mxUtils.indexOf(D,b[g]))null==l[g]?delete c.currentEdgeStyle[b[g]]:c.currentEdgeStyle[b[g]]=
 l[g]}}null!=this.toolbar&&(this.toolbar.setFontName(c.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(c.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==c.currentEdgeStyle.edgeStyle&&"1"==c.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==c.currentEdgeStyle.edgeStyle||"none"==c.currentEdgeStyle.edgeStyle||null==
 c.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==c.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==c.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==c.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&
 (this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==c.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==c.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==c.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",c.currentEdgeStyle.shape,c.currentEdgeStyle[mxConstants.STYLE_STARTARROW],
@@ -2096,28 +2098,29 @@ EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipb
 !1,null):e=c.apply(this,arguments);a.updatePasteActionStates();return e};var k=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){k.apply(this,arguments);a.updatePasteActionStates()};var m=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,c){m.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20;
 EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),d=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*d.width),this.scale*(this.translate.y+a.y*d.height),this.scale*a.width*d.width,
 this.scale*a.height*d.height)};a.getPreferredPageSize=function(a,d,b){a=this.getPageLayout();d=this.getPageSize();return new mxRectangle(0,0,a.width*d.width,a.height*d.height)};var b=null,e=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(d,b,f,c){if(null!=a.container){f=null!=f?f:0;c=null!=c?c:0;var g=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),e=mxUtils.hasScrollbars(a.container),l=a.view.translate,n=a.view.scale,p=mxRectangle.fromRectangle(g);
-p.x=p.x/n-l.x;p.y=p.y/n-l.y;p.width/=n;p.height/=n;var l=a.container.scrollTop,u=a.container.scrollLeft,y=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)y+=3;var t=a.container.offsetWidth-y,y=a.container.offsetHeight-y;d=d?Math.max(.3,Math.min(b||1,t/p.width)):n;b=(t-d*p.width)/2/d;var J=0==this.lightboxVerticalDivider?0:(y-d*p.height)/this.lightboxVerticalDivider/d;e&&(b=Math.max(b,0),J=Math.max(J,0));if(e||g.width<t||g.height<y)a.view.scaleAndTranslate(d,
-Math.floor(b-p.x),Math.floor(J-p.y)),a.container.scrollTop=l*d/n,a.container.scrollLeft=u*d/n;else if(0!=f||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+f/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var c=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",c);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",c)});this.editor.addListener("resetGraphView",
-mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){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.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var k=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(a.container);this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||
-0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",k);k();var m=0,k=mxUtils.bind(this,function(a,d,b){m++;var f=document.createElement("span");f.style.paddingLeft="8px";f.style.paddingRight="8px";f.style.cursor="pointer";mxEvent.addListener(f,"click",a);null!=b&&f.setAttribute("title",b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",d);f.appendChild(a);this.chromelessToolbar.appendChild(f);
-return f}),q=k(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),r=document.createElement("div");r.style.display="inline-block";r.style.verticalAlign="top";r.style.fontFamily="Helvetica,Arial";r.style.marginTop="8px";r.style.fontSize="14px";r.style.color="#ffffff";this.chromelessToolbar.appendChild(r);var v=k(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,
-mxResources.get("nextPage")),z=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(r.innerHTML="",mxUtils.write(r,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});q.style.paddingLeft="0px";q.style.paddingRight="4px";v.style.paddingLeft="4px";v.style.paddingRight="0px";var d=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(v.style.display="",q.style.display="",r.style.display="inline-block"):
-(v.style.display="none",q.style.display="none",r.style.display="none");z()});this.editor.addListener("resetGraphView",d);this.editor.addListener("pageSelected",z);k(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");k(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");k(mxUtils.bind(this,
-function(d){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(d)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var f=null,l=null,n=mxUtils.bind(this,function(a){null!=f&&(window.clearTimeout(f),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);f=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);f=null;l=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display=
-"none";l=null}),600)}),a||200)}),g=mxUtils.bind(this,function(a){null!=f&&(window.clearTimeout(f),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var p=k(mxUtils.bind(this,function(d){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,
-"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var b=p.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";
-mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(d)}),Editor.layersLargeImage,mxResources.get("layers")),B=a.getModel();B.addListener(mxEvent.CHANGE,function(){p.style.display=1<B.getChildCount(B.root)?
-"":"none"})}this.addChromelessToolbarItems(k);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||k(mxUtils.bind(this,function(d){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(d)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(d=0;d<this.lightboxToolbarActions.length;d++){var x=
-this.lightboxToolbarActions[d];k(x.fn,x.icon,x.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||k(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?
-"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)||g(30),n())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100);mxEvent.consume(a)}));
-mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||g(30)}));var t=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,d){},mouseUp:function(d,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<t&&Math.abs(this.scrollTop-
-a.container.scrollTop)<t&&Math.abs(this.startX-b.getGraphX())<t&&Math.abs(this.startY-b.getGraphY())<t&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?n():g(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*d.width;this.translate.y=
-a.y-(this.y0||0)*d.height}y.apply(this,arguments)};var u=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),b=this.getPagePadding(),f=this.getPageSize(),c=Math.ceil(2*b.x+d.width*f.width),g=Math.ceil(2*b.y+d.height*f.height),e=a.minimumGraphSize;if(null==e||e.width!=c||e.height!=g)a.minimumGraphSize=new mxRectangle(0,0,c,g);c=b.x-d.x*f.width;b=b.y-d.y*f.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y==
-b?u.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=a.view.translate.x,f=a.view.translate.y,a.view.setTranslate(c,b),a.container.scrollLeft+=Math.round((c-d)*a.view.scale),a.container.scrollTop+=Math.round((b-f)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var A=null;a.lazyZoom=function(d){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);d?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=
-(this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*
-this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,function(){var d=mxUtils.getOffset(a.container),f=0,c=0;null!=A&&(f=a.container.offsetWidth/2-A.x+d.x,c=a.container.offsetHeight/2-A.y+d.y);d=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=d&&(null!=b&&e.chromelessResize(!1,null,f*(this.cumulativeZoomFactor-1),c*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==f&&0==c||(a.container.scrollLeft-=f*(this.cumulativeZoomFactor-
-1),a.container.scrollTop-=c*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,b){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==a.container){A=new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d));a.lazyZoom(b);mxEvent.consume(d);break}f=f.parentNode}}))};
+p.x=p.x/n-l.x;p.y=p.y/n-l.y;p.width/=n;p.height/=n;var l=a.container.scrollTop,u=a.container.scrollLeft,x=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)x+=3;var J=a.container.offsetWidth-x,x=a.container.offsetHeight-x;d=d?Math.max(.3,Math.min(b||1,J/p.width)):n;b=(J-d*p.width)/2/d;var t=0==this.lightboxVerticalDivider?0:(x-d*p.height)/this.lightboxVerticalDivider/d;e&&(b=Math.max(b,0),t=Math.max(t,0));if(e||g.width<J||g.height<x)a.view.scaleAndTranslate(d,
+Math.floor(b-p.x),Math.floor(t-p.y)),a.container.scrollTop=l*d/n,a.container.scrollLeft=u*d/n;else if(0!=f||0!=c)g=a.view.translate,a.view.setTranslate(Math.floor(g.x+f/n),Math.floor(g.y+c/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var c=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",c);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",c)});this.editor.addListener("resetGraphView",
+mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(d){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(d){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var k=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.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left="50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var m=mxUtils.bind(this,function(){var d=mxUtils.getCurrentStyle(a.container);
+this.chromelessToolbar.style.bottom=(null!=d?parseInt(d["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",m);m();var q=0,m=mxUtils.bind(this,function(a,d,b){q++;var f=document.createElement("span");f.style.paddingLeft="8px";f.style.paddingRight="8px";f.style.cursor="pointer";mxEvent.addListener(f,"click",a);null!=b&&f.setAttribute("title",b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",
+d);f.appendChild(a);this.chromelessToolbar.appendChild(f);return f});null!=k.backBtn&&m(mxUtils.bind(this,function(a){window.location.href=k.backBtn.url;mxEvent.consume(a)}),Editor.backLargeImage,mxResources.get("goback",null,"Go Back"));var r=m(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),v=document.createElement("div");v.style.display="inline-block";v.style.verticalAlign="top";v.style.fontFamily=
+"Helvetica,Arial";v.style.marginTop="8px";v.style.fontSize="14px";v.style.color="#ffffff";this.chromelessToolbar.appendChild(v);var z=m(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),d=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(v.innerHTML="",mxUtils.write(v,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});r.style.paddingLeft="0px";
+r.style.paddingRight="4px";z.style.paddingLeft="4px";z.style.paddingRight="0px";var f=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(z.style.display="",r.style.display="",v.style.display="inline-block"):(z.style.display="none",r.style.display="none",v.style.display="none");d()});this.editor.addListener("resetGraphView",f);this.editor.addListener("pageSelected",d);m(mxUtils.bind(this,function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,
+mxResources.get("zoomOut")+" (Alt+Mousewheel)");m(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");m(mxUtils.bind(this,function(d){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(d)}),Editor.actualSizeLargeImage,mxResources.get("fit"));var l=null,p=null,g=mxUtils.bind(this,function(a){null!=l&&(window.clearTimeout(l),
+fadeThead=null);null!=p&&(window.clearTimeout(p),fadeThead2=null);l=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);l=null;p=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";p=null}),600)}),a||200)}),n=mxUtils.bind(this,function(a){null!=l&&(window.clearTimeout(l),fadeThead=null);null!=p&&(window.clearTimeout(p),fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||
+30)});if("1"==urlParams.layers){this.layersDialog=null;var A=m(mxUtils.bind(this,function(d){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var b=A.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius",
+"5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);
+this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(d)}),Editor.layersLargeImage,mxResources.get("layers")),y=a.getModel();y.addListener(mxEvent.CHANGE,function(){A.style.display=1<y.getChildCount(y.root)?"":"none"})}this.addChromelessToolbarItems(m);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||m(mxUtils.bind(this,function(d){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):
+a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(d)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(f=0;f<this.lightboxToolbarActions.length;f++){var t=this.lightboxToolbarActions[f];m(t.fn,t.icon,t.tooltip)}!a.lightbox||"1"!=urlParams.close&&this.container==document.body||m(mxUtils.bind(this,function(a){"1"==urlParams.close?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");
+null!=k.refreshBtn&&m(mxUtils.bind(this,function(a){k.refreshBtn.url?window.location.href=k.refreshBtn.url:window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));this.chromelessToolbar.style.display="none";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+(mxEvent.isShiftDown(a)||n(30),g())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?g():n(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?g():n(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||
+n(30)}));var x=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,d){},mouseUp:function(d,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<x&&Math.abs(this.scrollTop-a.container.scrollTop)<x&&Math.abs(this.startX-b.getGraphX())<x&&Math.abs(this.startY-b.getGraphY())<
+x&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?g():n(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var u=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*d.width;this.translate.y=a.y-(this.y0||0)*d.height}u.apply(this,arguments)};var D=a.sizeDidChange;a.sizeDidChange=function(){if(null!=
+this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),b=this.getPagePadding(),f=this.getPageSize(),c=Math.ceil(2*b.x+d.width*f.width),g=Math.ceil(2*b.y+d.height*f.height),e=a.minimumGraphSize;if(null==e||e.width!=c||e.height!=g)a.minimumGraphSize=new mxRectangle(0,0,c,g);c=b.x-d.x*f.width;b=b.y-d.y*f.height;this.autoTranslate||this.view.translate.x==c&&this.view.translate.y==b?D.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=a.view.translate.x,
+f=a.view.translate.y,a.view.setTranslate(c,b),a.container.scrollLeft+=Math.round((c-d)*a.view.scale),a.container.scrollTop+=Math.round((b-f)*a.view.scale),this.autoTranslate=!1)}}}a.updateZoomTimeout=null;a.cumulativeZoomFactor=1;var B=null;a.lazyZoom=function(d){null!=this.updateZoomTimeout&&window.clearTimeout(this.updateZoomTimeout);d?.15>this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale+.01)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=
+Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor=(this.view.scale-.01)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.01,Math.min(this.view.scale*this.cumulativeZoomFactor,160)/this.view.scale);this.updateZoomTimeout=window.setTimeout(mxUtils.bind(this,
+function(){var d=mxUtils.getOffset(a.container),f=0,c=0;null!=B&&(f=a.container.offsetWidth/2-B.x+d.x,c=a.container.offsetHeight/2-B.y+d.y);d=this.view.scale;this.zoom(this.cumulativeZoomFactor);this.view.scale!=d&&(null!=b&&e.chromelessResize(!1,null,f*(this.cumulativeZoomFactor-1),c*(this.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==f&&0==c||(a.container.scrollLeft-=f*(this.cumulativeZoomFactor-1),a.container.scrollTop-=c*(this.cumulativeZoomFactor-1)));this.cumulativeZoomFactor=
+1;this.updateZoomTimeout=null}),this.lazyZoomDelay)};mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,b){if((null==this.dialogs||0==this.dialogs.length)&&a.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==a.container){B=new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d));a.lazyZoom(b);mxEvent.consume(d);break}f=f.parentNode}}))};
 EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))};
 EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return 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){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
@@ -2209,14 +2212,14 @@ this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constr
 function(){var a=d.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],c=this.graph.pageFormat,f=this.graph.pageScale,e=c.width*f,c=c.height*f,f=this.graph.view.translate,g=this.graph.view.scale,l=this.graph.getPageLayout(),n=0;n<l.width;n++)b.push(new mxRectangle(((l.x+n)*e+f.x)*g,(l.y*c+f.y)*g,e*g,c*g));for(n=0;n<l.height;n++)b.push(new mxRectangle((l.x*e+f.x)*g,((l.y+n)*c+f.y)*g,e*g,c*g));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=
 function(a,d){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};this.graphHandler.getCells=function(a){for(var d=mxGraphHandler.prototype.getCells.apply(this,arguments),b=[],c=0;c<d.length;c++){var f=this.graph.view.getState(d[c]),f=null!=f?f.style:this.graph.getCellStyle(d[c]);
 "1"==mxUtils.getValue(f,"part","0")?(f=this.graph.model.getParent(d[c]),this.graph.model.isVertex(f)&&0>mxUtils.indexOf(d,f)&&b.push(f)):b.push(d[c])}return b};this.connectionHandler.createTargetVertex=function(a,d){var b=this.graph.view.getState(d),b=null!=b?b.style:this.graph.getCellStyle(d);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(d),this.graph.model.isVertex(b)&&(d=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var f=new mxRubberband(this);
-this.getRubberband=function(){return f};var l=(new Date).getTime(),n=0,g=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;g.apply(this,arguments);a!=this.currentState?(l=(new Date).getTime(),n=0):n=(new Date).getTime()-l};var p=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<n||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
-"outlineConnect","1"))&&p.apply(this,arguments)};var B=this.isToggleEvent;this.isToggleEvent=function(a){return B.apply(this,arguments)||mxEvent.isShiftDown(a)};var x=f.isForceRubberbandEvent;f.isForceRubberbandEvent=function(a){return x.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var t=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&
-(t=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=t)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var y=this.click;this.click=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!d||a.isConsumed())return y.apply(this,
+this.getRubberband=function(){return f};var l=(new Date).getTime(),p=0,g=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;g.apply(this,arguments);a!=this.currentState?(l=(new Date).getTime(),p=0):p=(new Date).getTime()-l};var n=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<p||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,
+"outlineConnect","1"))&&n.apply(this,arguments)};var A=this.isToggleEvent;this.isToggleEvent=function(a){return A.apply(this,arguments)||mxEvent.isShiftDown(a)};var y=f.isForceRubberbandEvent;f.isForceRubberbandEvent=function(a){return y.apply(this,arguments)||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var t=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&
+(t=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=t)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var x=this.click;this.click=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!d||a.isConsumed())return x.apply(this,
 arguments);d=d?a.sourceState.cell:a.getCell();null!=d&&(d=this.getLinkForCell(d),null!=d&&(this.isCustomLink(d)?this.customLinkClicked(d):this.openLink(d)))};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var d=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(d?a.sourceState.cell:a.getCell())};var u=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=
-this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,d){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,d);return b};this.getAllCells=function(a,d,b,c,f,e){e=null!=e?e:[];if(0<b||0<c){var g=this.getModel(),l=a+b,n=d+c;null==f&&(f=this.getCurrentRoot(),null==f&&(f=g.getRoot()));if(null!=f)for(var p=g.getChildCount(f),u=0;u<p;u++){var y=g.getChildAt(f,u),t=this.view.getState(y);if(null!=
-t&&this.isCellVisible(y)&&"1"!=mxUtils.getValue(t.style,"locked","0")){var k=mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION)||0;0!=k&&(t=mxUtils.getBoundingBox(t,k));(g.isEdge(y)||g.isVertex(y))&&t.x>=a&&t.y+t.height<=n&&t.y>=d&&t.x+t.width<=l&&e.push(y);this.getAllCells(a,d,b,c,y,e)}}}return e};var A=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,d,b){return this.graph.isCellSelected(a)?!1:A.apply(this,arguments)};this.isCellLocked=function(a){for(a=
-this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var D=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")){var b=d.getProperty("event").getState();D=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,d){if(!mxEvent.isMultiTouchEvent(d)){var b=
-d.getProperty("event"),c=d.getProperty("cell");null==c?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),f.start(b.x,b.y)):null!=D?this.addSelectionCells(D):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);D=null;d.consume()}}));this.connectionHandler.selectCells=function(a,d){this.graph.setSelectionCell(d||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,d){return d&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,
+this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return u.apply(this,arguments)};this.selectRegion=function(a,d){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,d);return b};this.getAllCells=function(a,d,b,c,f,e){e=null!=e?e:[];if(0<b||0<c){var g=this.getModel(),l=a+b,n=d+c;null==f&&(f=this.getCurrentRoot(),null==f&&(f=g.getRoot()));if(null!=f)for(var p=g.getChildCount(f),u=0;u<p;u++){var x=g.getChildAt(f,u),t=this.view.getState(x);if(null!=
+t&&this.isCellVisible(x)&&"1"!=mxUtils.getValue(t.style,"locked","0")){var k=mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION)||0;0!=k&&(t=mxUtils.getBoundingBox(t,k));(g.isEdge(x)||g.isVertex(x))&&t.x>=a&&t.y+t.height<=n&&t.y>=d&&t.x+t.width<=l&&e.push(x);this.getAllCells(a,d,b,c,x,e)}}}return e};var D=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,d,b){return this.graph.isCellSelected(a)?!1:D.apply(this,arguments)};this.isCellLocked=function(a){for(a=
+this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0;a=this.view.getState(this.model.getParent(a.cell))}return!1};var B=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){if("mouseDown"==d.getProperty("eventName")){var b=d.getProperty("event").getState();B=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,d){if(!mxEvent.isMultiTouchEvent(d)){var b=
+d.getProperty("event"),c=d.getProperty("cell");null==c?(b=mxUtils.convertPoint(this.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),f.start(b.x,b.y)):null!=B?this.addSelectionCells(B):1<this.getSelectionCount()&&this.isCellSelected(c)&&this.removeSelectionCell(c);B=null;d.consume()}}));this.connectionHandler.selectCells=function(a,d){this.graph.setSelectionCell(d||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,d){return d&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,
 mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var U=this.updateMouseEvent;this.updateMouseEvent=function(a){a=U.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)};
 Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;
 Graph.createSvgImage=function(a,b,e){e=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),a,b)};mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;
@@ -2247,8 +2250,8 @@ Graph.prototype.isLabelMovable=function(a){var b=this.view.getState(a),b=null!=b
 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,e){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 c=this.dateFormatCache,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,m=/[^-+\dA-Z]/g,q=function(a,d){a=String(a);for(d=d||2;a.length<d;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)||
-/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(c.masks[b]||b||c.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),e=!0);var r=e?"getUTC":"get",v=a[r+"Date"](),z=a[r+"Day"](),d=a[r+"Month"](),f=a[r+"FullYear"](),l=a[r+"Hours"](),n=a[r+"Minutes"](),g=a[r+"Seconds"](),r=a[r+"Milliseconds"](),p=e?0:a.getTimezoneOffset(),B={d:v,dd:q(v),ddd:c.i18n.dayNames[z],dddd:c.i18n.dayNames[z+7],m:d+1,mm:q(d+1),mmm:c.i18n.monthNames[d],mmmm:c.i18n.monthNames[d+
-12],yy:String(f).slice(2),yyyy:f,h:l%12||12,hh:q(l%12||12),H:l,HH:q(l),M:n,MM:q(n),s:g,ss:q(g),l:q(r,3),L:q(99<r?Math.round(r/10):r),t:12>l?"a":"p",tt:12>l?"am":"pm",T:12>l?"A":"P",TT:12>l?"AM":"PM",Z:e?"UTC":(String(a).match(k)||[""]).pop().replace(m,""),o:(0<p?"-":"+")+q(100*Math.floor(Math.abs(p)/60)+Math.abs(p)%60,4),S:["th","st","nd","rd"][3<v%10?0:(10!=v%100-v%10)*v%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in B?B[a]:a.slice(1,
+/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(c.masks[b]||b||c.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),e=!0);var r=e?"getUTC":"get",v=a[r+"Date"](),z=a[r+"Day"](),d=a[r+"Month"](),f=a[r+"FullYear"](),l=a[r+"Hours"](),p=a[r+"Minutes"](),g=a[r+"Seconds"](),r=a[r+"Milliseconds"](),n=e?0:a.getTimezoneOffset(),A={d:v,dd:q(v),ddd:c.i18n.dayNames[z],dddd:c.i18n.dayNames[z+7],m:d+1,mm:q(d+1),mmm:c.i18n.monthNames[d],mmmm:c.i18n.monthNames[d+
+12],yy:String(f).slice(2),yyyy:f,h:l%12||12,hh:q(l%12||12),H:l,HH:q(l),M:p,MM:q(p),s:g,ss:q(g),l:q(r,3),L:q(99<r?Math.round(r/10):r),t:12>l?"a":"p",tt:12>l?"am":"pm",T:12>l?"A":"P",TT:12>l?"AM":"PM",Z:e?"UTC":(String(a).match(k)||[""]).pop().replace(m,""),o:(0<n?"-":"+")+q(100*Math.floor(Math.abs(n)/60)+Math.abs(n)%60,4),S:["th","st","nd","rd"][3<v%10?0:(10!=v%100-v%10)*v%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in A?A[a]:a.slice(1,
 a.length-1)})};
 Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),e=b.getChildCount(b.root),c=0;c<e;c++)mxUtils.bind(this,function(c){var e=document.createElement("div");e.style.overflow="hidden";e.style.textOverflow="ellipsis";e.style.padding="2px";e.style.whiteSpace="nowrap";var k=document.createElement("input");k.style.display="inline-block";k.setAttribute("type","checkbox");b.isVisible(c)&&(k.setAttribute("checked","checked"),
 k.defaultChecked=!0);e.appendChild(k);var r=this.convertValueToString(c)||mxResources.get("background")||"Background";e.setAttribute("title",r);mxUtils.write(e,r);a.appendChild(e);mxEvent.addListener(k,"click",function(){null!=k.getAttribute("checked")?k.removeAttribute("checked"):k.setAttribute("checked","checked");b.setVisible(c,k.checked)})})(b.getChildAt(b.root,c));return a};
@@ -2258,9 +2261,9 @@ Graph.prototype.selectCellsForConnectVertex=function(a,b,e){2==a.length&&this.mo
 Graph.prototype.connectVertex=function(a,b,e,c,k,m){m=m?m:!1;var q=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(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(q.x+=a.geometry.width/2,q.y-=e):b==mxConstants.DIRECTION_SOUTH?(q.x+=a.geometry.width/2,q.y+=a.geometry.height+e):(q.x=b==mxConstants.DIRECTION_WEST?q.x-e:q.x+(a.geometry.width+e),q.y+=a.geometry.height/2);e=this.view.getState(this.model.getParent(a));
 var r=this.view.scale,v=this.view.translate,z=v.x*r,v=v.y*r;null!=e&&this.model.isVertex(e.cell)&&(z=e.x,v=e.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(q.x+=a.parent.geometry.x,q.y+=a.parent.geometry.y);m=m||mxEvent.isControlDown(c)&&!k?null:this.getCellAt(z+q.x*r,v+q.y*r);this.model.isAncestor(m,a)&&(m=null);for(e=m;null!=e;){if(this.isCellLocked(e)){m=null;break}e=this.model.getParent(e)}null!=m&&(e=this.view.getState(a),r=this.view.getState(m),null!=e&&null!=r&&mxUtils.intersects(e,
 r)&&(m=null));if(k=!mxEvent.isShiftDown(c)||k)b==mxConstants.DIRECTION_NORTH?q.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?q.y+=a.geometry.height/2:q.x=b==mxConstants.DIRECTION_WEST?q.x-a.geometry.width/2:q.x+a.geometry.width/2;null==m||this.isCellConnectable(m)||(e=this.getModel().getParent(m),this.getModel().isVertex(e)&&this.isCellConnectable(e)&&(m=e));if(m==a||this.model.isEdge(m)||!this.isCellConnectable(m))m=null;e=[];this.model.beginUpdate();try{r=m;if(null==r&&k){for(var z=a,d=
-this.getCellGeometry(a);null!=d&&d.relative;)z=this.getModel().getParent(z),d=this.getCellGeometry(z);var f=this.view.getState(z),l=null!=f?f.style:this.getCellStyle(z);if(mxUtils.getValue(l,"part",!1)){var n=this.model.getParent(z);this.model.isVertex(n)&&(z=n)}r=this.duplicateCells([z],!1)[0];d=this.getCellGeometry(r);null!=d&&(d.x=q.x-d.width/2,d.y=q.y-d.height/2)}d=null;null!=this.layoutManager&&(d=this.layoutManager.getLayout(this.model.getParent(a)));var g=mxEvent.isControlDown(c)&&k||null==
-m&&null!=d&&d.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,r,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var p=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=g.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==g.parent&&(p=c.parent.getIndex(c),this.model.add(c.parent,g,p))}null==m&&null!=r&&null!=d&&null!=a.parent&&d.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&
-(p=a.parent.getIndex(a),this.model.add(a.parent,r,p));null!=g&&e.push(g);null==m&&null!=r&&e.push(r);null==r&&null!=g&&g.geometry.setTerminalPoint(q,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}return e};
+this.getCellGeometry(a);null!=d&&d.relative;)z=this.getModel().getParent(z),d=this.getCellGeometry(z);var f=this.view.getState(z),l=null!=f?f.style:this.getCellStyle(z);if(mxUtils.getValue(l,"part",!1)){var p=this.model.getParent(z);this.model.isVertex(p)&&(z=p)}r=this.duplicateCells([z],!1)[0];d=this.getCellGeometry(r);null!=d&&(d.x=q.x-d.width/2,d.y=q.y-d.height/2)}d=null;null!=this.layoutManager&&(d=this.layoutManager.getLayout(this.model.getParent(a)));var g=mxEvent.isControlDown(c)&&k||null==
+m&&null!=d&&d.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,r,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var n=null;for(c=a;null!=c.parent&&null!=c.geometry&&c.geometry.relative&&c.parent!=g.parent;)c=this.model.getParent(c);null!=c&&null!=c.parent&&c.parent==g.parent&&(n=c.parent.getIndex(c),this.model.add(c.parent,g,n))}null==m&&null!=r&&null!=d&&null!=a.parent&&d.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&
+(n=a.parent.getIndex(a),this.model.add(a.parent,r,n));null!=g&&e.push(g);null==m&&null!=r&&e.push(r);null==r&&null!=g&&g.geometry.setTerminalPoint(q,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}return e};
 Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],e,c;for(c in this.model.cells)if(e=this.model.cells[c],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(a.innerHTML=this.getLabel(e),e=mxUtils.extractTextWithWhitespace([a])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&b.push(e);return b.join(" ")};
 Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),e=a,c=null;null==c&&null!=e;)null!=e.value&&"object"==typeof e.value&&(c=e.hasAttribute(b)?null!=e.getAttribute(b)?e.getAttribute(b):"":null),e=this.model.getParent(e);return c||""}return a.value.getAttribute("label")||""}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};
@@ -2313,14 +2316,14 @@ this.setDisplay("");null!=this.currentState&&this.currentState!=a&&c<this.activa
 this.reset())}else this.reset()};HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};
 (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,c){var d=this.getState(a);null!=d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&!d.invalid&&this.updateLineJumps(d)&&this.graph.cellRenderer.redraw(d,!1,this.isRendering());d=b.apply(this,arguments);null!=
 d&&this.graph.model.isEdge(d.cell)&&null!=d.style&&1!=d.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(d);return d};var e=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return e.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var c=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){c.apply(this,arguments);this.graph.model.isEdge(a.cell)&&
-1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var d=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(d,b,f){var e=new mxPoint(b,f);e.type=d;c.push(e);e=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==e||e.type!=d||e.x!=b||e.y!=f},n=.5*this.scale,d=!1,c=[],g=0;g<b.length-1;g++){for(var p=
-b[g+1],k=b[g],x=[],t=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,t.x,t.y,p.x,p.y)<1*this.scale*this.scale;)p=t,g++,t=b[g+2];for(var d=e(0,k.x,k.y)||d,y=0;y<this.validEdges.length;y++){var u=this.validEdges[y],A=u.absolutePoints;if(null!=A&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<A.length-1;u++){for(var D=A[u+1],r=A[u],t=A[u+2];u<A.length-2&&mxUtils.ptSegDistSq(r.x,r.y,t.x,t.y,D.x,D.y)<1*this.scale*this.scale;)D=t,u++,t=A[u+2];t=mxUtils.intersection(k.x,k.y,p.x,p.y,r.x,r.y,D.x,
-D.y);if(null!=t&&(Math.abs(t.x-r.x)>n||Math.abs(t.y-r.y)>n)&&(Math.abs(t.x-D.x)>n||Math.abs(t.y-D.y)>n)){D=t.x-k.x;r=t.y-k.y;t={distSq:D*D+r*r,x:t.x,y:t.y};for(D=0;D<x.length;D++)if(x[D].distSq>t.distSq){x.splice(D,0,t);t=null;break}null==t||0!=x.length&&x[x.length-1].x===t.x&&x[x.length-1].y===t.y||x.push(t)}}}for(u=0;u<x.length;u++)d=e(1,x[u].x,x[u].y)||d}t=b[b.length-1];d=e(0,t.x,t.y)||d}a.routedPoints=c;return d}return!1};var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,
-b,d){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,n=mxUtils.getValue(this.style,"jumpStyle","none"),g,p=!0,B=null,x=null;g=[];var t=null;a.begin();for(var y=
-0;y<this.state.routedPoints.length;y++){var u=this.state.routedPoints[y],A=new mxPoint(u.x/this.scale,u.y/this.scale);0==y?A=b[0]:y==this.state.routedPoints.length-1&&(A=b[b.length-1]);var D=!1;if(null!=B&&1==u.type){var r=this.state.routedPoints[y+1],u=r.x/this.scale-A.x,r=r.y/this.scale-A.y,u=u*u+r*r;null==t&&(t=new mxPoint(A.x-B.x,A.y-B.y),x=Math.sqrt(t.x*t.x+t.y*t.y),t.x=t.x*e/x,t.y=t.y*e/x);u>e*e&&0<x&&(u=B.x-A.x,r=B.y-A.y,u=u*u+r*r,u>e*e&&(D=new mxPoint(A.x-t.x,A.y-t.y),u=new mxPoint(A.x+t.x,
-A.y+t.y),g.push(D),this.addPoints(a,g,d,c,!1,null,p),g=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,p=!1,"sharp"==n?(a.lineTo(D.x-t.y*g,D.y+t.x*g),a.lineTo(u.x-t.y*g,u.y+t.x*g),a.lineTo(u.x,u.y)):"arc"==n?(g*=1.3,a.curveTo(D.x-t.y*g,D.y+t.x*g,u.x-t.y*g,u.y+t.x*g,u.x,u.y)):(a.moveTo(u.x,u.y),p=!0),g=[u],D=!0))}else t=null;D||(g.push(A),B=A)}this.addPoints(a,g,d,c,!1,null,p);a.stroke()}};var m=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=
-function(a,b,d,c){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,c);var f=this.getNextPoint(a,d,c),e=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),p=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var k=Math.cos(-g),r=Math.sin(-g),f=mxUtils.getRotatedPoint(f,k,r,p);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[c?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:
-mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(b,f,0==g&&e,k);0!=g&&(k=Math.cos(g),r=Math.sin(g),f=mxUtils.getRotatedPoint(f,k,r,p));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,d,c,f),c)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,d,c,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);c=d=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var l=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==
+1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var d=null!=a.routedPoints,c=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var e=function(d,b,f){var e=new mxPoint(b,f);e.type=d;c.push(e);e=null!=a.routedPoints?a.routedPoints[c.length-1]:null;return null==e||e.type!=d||e.x!=b||e.y!=f},p=.5*this.scale,d=!1,c=[],g=0;g<b.length-1;g++){for(var n=
+b[g+1],k=b[g],y=[],t=b[g+2];g<b.length-2&&mxUtils.ptSegDistSq(k.x,k.y,t.x,t.y,n.x,n.y)<1*this.scale*this.scale;)n=t,g++,t=b[g+2];for(var d=e(0,k.x,k.y)||d,x=0;x<this.validEdges.length;x++){var u=this.validEdges[x],D=u.absolutePoints;if(null!=D&&mxUtils.intersects(a,u)&&"1"!=u.style.noJump)for(u=0;u<D.length-1;u++){for(var B=D[u+1],r=D[u],t=D[u+2];u<D.length-2&&mxUtils.ptSegDistSq(r.x,r.y,t.x,t.y,B.x,B.y)<1*this.scale*this.scale;)B=t,u++,t=D[u+2];t=mxUtils.intersection(k.x,k.y,n.x,n.y,r.x,r.y,B.x,
+B.y);if(null!=t&&(Math.abs(t.x-r.x)>p||Math.abs(t.y-r.y)>p)&&(Math.abs(t.x-B.x)>p||Math.abs(t.y-B.y)>p)){B=t.x-k.x;r=t.y-k.y;t={distSq:B*B+r*r,x:t.x,y:t.y};for(B=0;B<y.length;B++)if(y[B].distSq>t.distSq){y.splice(B,0,t);t=null;break}null==t||0!=y.length&&y[y.length-1].x===t.x&&y[y.length-1].y===t.y||y.push(t)}}}for(u=0;u<y.length;u++)d=e(1,y[u].x,y[u].y)||d}t=b[b.length-1];d=e(0,t.x,t.y)||d}a.routedPoints=c;return d}return!1};var k=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,
+b,d){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)k.apply(this,arguments);else{var c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,p=mxUtils.getValue(this.style,"jumpStyle","none"),g,n=!0,A=null,y=null;g=[];var t=null;a.begin();for(var x=
+0;x<this.state.routedPoints.length;x++){var u=this.state.routedPoints[x],D=new mxPoint(u.x/this.scale,u.y/this.scale);0==x?D=b[0]:x==this.state.routedPoints.length-1&&(D=b[b.length-1]);var B=!1;if(null!=A&&1==u.type){var r=this.state.routedPoints[x+1],u=r.x/this.scale-D.x,r=r.y/this.scale-D.y,u=u*u+r*r;null==t&&(t=new mxPoint(D.x-A.x,D.y-A.y),y=Math.sqrt(t.x*t.x+t.y*t.y),t.x=t.x*e/y,t.y=t.y*e/y);u>e*e&&0<y&&(u=A.x-D.x,r=A.y-D.y,u=u*u+r*r,u>e*e&&(B=new mxPoint(D.x-t.x,D.y-t.y),u=new mxPoint(D.x+t.x,
+D.y+t.y),g.push(B),this.addPoints(a,g,d,c,!1,null,n),g=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,n=!1,"sharp"==p?(a.lineTo(B.x-t.y*g,B.y+t.x*g),a.lineTo(u.x-t.y*g,u.y+t.x*g),a.lineTo(u.x,u.y)):"arc"==p?(g*=1.3,a.curveTo(B.x-t.y*g,B.y+t.x*g,u.x-t.y*g,u.y+t.x*g,u.x,u.y)):(a.moveTo(u.x,u.y),n=!0),g=[u],B=!0))}else t=null;B||(g.push(D),A=D)}this.addPoints(a,g,d,c,!1,null,n);a.stroke()}};var m=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=
+function(a,b,d,c){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,c);var f=this.getNextPoint(a,d,c),e=this.graph.isOrthogonal(a),g=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),n=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=g)var k=Math.cos(-g),y=Math.sin(-g),f=mxUtils.getRotatedPoint(f,k,y,n);k=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]||0);k+=parseFloat(a.style[c?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:
+mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(b,f,0==g&&e,k);0!=g&&(k=Math.cos(g),y=Math.sin(g),f=mxUtils.getRotatedPoint(f,k,y,n));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,d,c,f),c)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,d,c,e){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);c=d=null;if(null!=a)for(var f=0;f<a.length;f++){var g=this.graph.getConnectionPoint(b,a[f]);if(null!=g){var l=(g.x-e.x)*(g.x-e.x)+(g.y-e.y)*(g.y-e.y);if(null==
 c||l<c)d=g,c=l}}null!=d&&(e=d)}return e};var q=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,d){var c=q.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=d.state&&(c=d.state.view.graph.replacePlaceholders(d.state.cell,c));return c};var r=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b=mxUtils.getValue(a.style,mxConstants.STYLE_SHAPE,null);if(null!=
 b&&"stencil("==b.substring(0,8))try{var d=b.substring(8,b.length-1),c=mxUtils.parseXml(a.view.graph.decompress(d));return new mxShape(new mxStencil(c.documentElement))}catch(l){null!=window.console&&console.log("Error in shape: "+l)}}return r.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];
 mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var e=mxStencilRegistry.getBasenameForStencil(a);if(null!=e){b=mxStencilRegistry.libraries[e];if(null!=b){if(null==mxStencilRegistry.packages[e]){for(var c=0;c<b.length;c++){var k=b[c];if(".xml"==k.toLowerCase().substring(k.length-4,k.length))mxStencilRegistry.loadStencilSet(k,null);else if(".js"==k.toLowerCase().substring(k.length-3,k.length))try{if(mxStencilRegistry.allowEval){var m=
@@ -2343,9 +2346,9 @@ if(c){this.isGridEnabled()&&(d=this.snap(d),b=this.snap(b));var g=this.getBoundi
 d?d.style:this.getCellStyle(a);null!=d&&(d=mxUtils.getValue(d,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,d,[a]))}};Graph.prototype.isValidRoot=function(a){for(var d=this.model.getChildCount(a),b=0,c=0;c<d;c++){var f=this.model.getChildAt(a,c);this.model.isVertex(f)&&(f=this.getCellGeometry(f),null==f||f.relative||b++)}return 0<b||this.isContainer(a)};Graph.prototype.isValidDropTarget=
 function(a){var d=this.view.getState(a),d=null!=d?d.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(d,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(d,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var d=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(d&&
 null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(d=!1))}return d};Graph.prototype.getPreferredSizeForCell=function(a){var d=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=d&&(d.width+=10,d.height+=4,this.gridEnabled&&(d.width=this.snap(d.width),d.height=this.snap(d.height)));return d};Graph.prototype.turnShapes=function(a){var d=this.getModel(),b=[];d.beginUpdate();try{for(var c=
-0;c<a.length;c++){var f=a[c];if(d.isEdge(f)){var e=d.getTerminal(f,!0),g=d.getTerminal(f,!1);d.setTerminal(f,g,!0);d.setTerminal(f,e,!1);var l=d.getGeometry(f);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var n=l.getTerminalPoint(!0),p=l.getTerminalPoint(!1);l.setTerminalPoint(n,!1);l.setTerminalPoint(p,!0);d.setGeometry(f,l);var u=this.view.getState(f),y=this.view.getState(e),t=this.view.getState(g);if(null!=u){var J=null!=y?this.getConnectionConstraint(u,y,!0):null,k=null!=t?this.getConnectionConstraint(u,
-t,!1):null;this.setConnectionConstraint(f,e,!0,k);this.setConnectionConstraint(f,g,!1,J)}b.push(f)}}else if(d.isVertex(f)&&(l=this.getCellGeometry(f),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=l.height/2-l.width/2;var A=l.width;l.width=l.height;l.height=A;d.setGeometry(f,l);var r=this.view.getState(f);if(null!=r){var B=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==B?B="south":"south"==B?B="west":"west"==B?B="north":"north"==B&&(B="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
-B,[f])}b.push(f)}}}finally{d.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var d=this.model.getDescendants(a.cell);if(0<d.length)for(var b=
+0;c<a.length;c++){var f=a[c];if(d.isEdge(f)){var e=d.getTerminal(f,!0),g=d.getTerminal(f,!1);d.setTerminal(f,g,!0);d.setTerminal(f,e,!1);var l=d.getGeometry(f);if(null!=l){l=l.clone();null!=l.points&&l.points.reverse();var n=l.getTerminalPoint(!0),p=l.getTerminalPoint(!1);l.setTerminalPoint(n,!1);l.setTerminalPoint(p,!0);d.setGeometry(f,l);var u=this.view.getState(f),x=this.view.getState(e),t=this.view.getState(g);if(null!=u){var J=null!=x?this.getConnectionConstraint(u,x,!0):null,k=null!=t?this.getConnectionConstraint(u,
+t,!1):null;this.setConnectionConstraint(f,e,!0,k);this.setConnectionConstraint(f,g,!1,J)}b.push(f)}}else if(d.isVertex(f)&&(l=this.getCellGeometry(f),null!=l)){l=l.clone();l.x+=l.width/2-l.height/2;l.y+=l.height/2-l.width/2;var D=l.width;l.width=l.height;l.height=D;d.setGeometry(f,l);var B=this.view.getState(f);if(null!=B){var A=B.style[mxConstants.STYLE_DIRECTION]||"east";"east"==A?A="south":"south"==A?A="west":"west"==A?A="north":"north"==A&&(A="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
+A,[f])}b.push(f)}}}finally{d.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var d=this.model.getDescendants(a.cell);if(0<d.length)for(var b=
 0;b<d.length;b++){var c=this.view.getState(d[b]);null!=c&&null!=c.shape&&null!=c.shape.stencil&&this.stencilHasPlaceholders(c.shape.stencil)?this.removeStateForCell(d[b]):this.isReplacePlaceholders(d[b])&&this.view.invalidate(d[b],!1,!1)}}};Graph.prototype.replaceElement=function(a,d){for(var b=a.ownerDocument.createElement(null!=d?d:"span"),c=Array.prototype.slice.call(a.attributes);attr=c.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)};
 Graph.prototype.updateLabelElements=function(a,d,b){a=null!=a?a:this.getSelectionCells();for(var c=document.createElement("div"),f=0;f<a.length;f++)if(this.isHtmlLabel(a[f])){var e=this.convertValueToString(a[f]);if(null!=e&&0<e.length){c.innerHTML=e;for(var g=c.getElementsByTagName(null!=b?b:"*"),l=0;l<g.length;l++)d(g[l]);c.innerHTML!=e&&this.cellLabelChanged(a[f],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,d,b){d=this.zapGremlins(d);this.model.beginUpdate();try{if(null!=a.value&&
 "object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),f=a;null!=f;){if(f==this.model.getRoot()||null!=f.value&&"object"==typeof f.value&&f.hasAttribute(c)){this.setAttributeForCell(f,c,d);break}f=this.model.getParent(f)}var e=a.value.cloneNode(!0);e.setAttribute("label",d);d=e}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var d=
@@ -2371,12 +2374,12 @@ a.length-1;0<=e;e--)if(0==e||a[e]!=f[e-1]){a[e].setAttribute("width",d);a[e].set
 Graph.prototype.distributeCells=function(a,d){null==d&&(d=this.getSelectionCells());if(null!=d&&1<d.length){for(var b=[],c=null,f=null,e=0;e<d.length;e++)if(this.getModel().isVertex(d[e])){var g=this.view.getState(d[e]);if(null!=g){var l=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,l):l,f=null!=f?Math.min(f,l):l;b.push(g)}}if(2<b.length){b.sort(function(d,b){return a?d.x-b.x:d.y-b.y});g=this.view.translate;l=this.view.scale;f=f/l-(a?g.x:g.y);c=c/l-(a?g.x:g.y);this.getModel().beginUpdate();
 try{for(var n=(c-f)/(b.length-1),c=f,e=1;e<b.length-1;e++){var p=this.view.getState(this.model.getParent(b[e].cell)),u=this.getCellGeometry(b[e].cell),c=c+n;null!=u&&null!=p&&(u=u.clone(),a?u.x=Math.round(c-u.width/2)-p.origin.x:u.y=Math.round(c-u.height/2)-p.origin.y,this.getModel().setGeometry(b[e].cell,u))}}finally{this.getModel().endUpdate()}}}return d};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.encodeCells=
 function(a){for(var d=this.cloneCells(a),b=new mxDictionary,c=0;c<a.length;c++)b.put(a[c],!0);for(c=0;c<d.length;c++){var f=this.view.getState(a[c]);if(null!=f){var e=this.getCellGeometry(d[c]);null==e||!e.relative||this.model.isEdge(a[c])||b.get(this.model.getParent(a[c]))||(e.relative=!1,e.x=f.x/f.view.scale-f.view.translate.x,e.y=f.y/f.view.scale-f.view.translate.y)}}b=new mxCodec;f=new mxGraphModel;e=f.getChildAt(f.getRoot(),0);for(c=0;c<a.length;c++)f.add(e,d[c]);return b.encode(f)};Graph.prototype.createSvgImageExport=
-function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,d){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,d,b,c,f,e,g,l,n,u){var p=this.useCssTransforms;p&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{d=null!=d?d:1;b=null!=b?b:0;f=null!=f?f:!0;e=null!=e?e:!0;g=null!=g?g:!0;var y=e||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==y)throw Error(mxResources.get("drawingEmpty"));
-var t=this.view.scale,k=mxUtils.createXmlDocument(),A=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=A.style?A.style.backgroundColor=a:A.setAttribute("style","background-color:"+a));null==k.createElementNS?(A.setAttribute("xmlns",mxConstants.NS_SVG),A.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):A.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=d/t;var B=Math.max(1,Math.ceil(y.width*a)+2*b)+(u?5:
-0),r=Math.max(1,Math.ceil(y.height*a)+2*b)+(u?5:0);A.setAttribute("version","1.1");A.setAttribute("width",B+"px");A.setAttribute("height",r+"px");A.setAttribute("viewBox",(f?"-0.5 -0.5":"0 0")+" "+B+" "+r);k.appendChild(A);var D=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"g"):k.createElement("g");A.appendChild(D);var x=this.createSvgCanvas(D);x.foOffset=f?-.5:0;x.textOffset=f?-.5:0;x.imageOffset=f?-.5:0;x.translate(Math.floor((b/d-y.x)/t),Math.floor((b/d-y.y)/t));var m=document.createElement("textarea"),
-q=x.createAlternateContent;x.createAlternateContent=function(a,d,b,c,f,e,g,l,n,u,p,y,t){var k=this.state;if(null!=this.foAltText&&(0==c||0!=k.fontSize&&e.length<5*c/k.fontSize)){var A=this.createElement("text");A.setAttribute("x",Math.round(c/2));A.setAttribute("y",Math.round((f+k.fontSize)/2));A.setAttribute("fill",k.fontColor||"black");A.setAttribute("text-anchor","middle");A.setAttribute("font-size",Math.round(k.fontSize)+"px");A.setAttribute("font-family",k.fontFamily);(k.fontStyle&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD&&A.setAttribute("font-weight","bold");(k.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&A.setAttribute("font-style","italic");(k.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&A.setAttribute("text-decoration","underline");try{return m.innerHTML=e,A.textContent=m.value,A}catch(oa){return q.apply(this,arguments)}}else return q.apply(this,arguments)};var J=this.backgroundImage;if(null!=J){d=t/d;var C=this.view.translate,X=new mxRectangle(C.x*d,
-C.y*d,J.width*d,J.height*d);mxUtils.intersects(y,X)&&x.image(C.x,C.y,J.width,J.height,J.src,!0)}x.scale(a);x.textEnabled=g;l=null!=l?l:this.createSvgImageExport();var E=l.drawCellState;l.drawCellState=function(a,d){for(var b=a.view.graph,c=b.isCellSelected(a.cell),f=b.model.getParent(a.cell);!e&&!c&&null!=f;)c=b.isCellSelected(f),f=b.model.getParent(f);(e||c)&&E.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),x);this.updateSvgLinks(A,n,!0);return A}finally{p&&(this.useCssTransforms=
+function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,d){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,d,b,c,f,e,g,l,n,p){var u=this.useCssTransforms;u&&(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{d=null!=d?d:1;b=null!=b?b:0;f=null!=f?f:!0;e=null!=e?e:!0;g=null!=g?g:!0;var x=e||c?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==x)throw Error(mxResources.get("drawingEmpty"));
+var t=this.view.scale,k=mxUtils.createXmlDocument(),D=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"svg"):k.createElement("svg");null!=a&&(null!=D.style?D.style.backgroundColor=a:D.setAttribute("style","background-color:"+a));null==k.createElementNS?(D.setAttribute("xmlns",mxConstants.NS_SVG),D.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):D.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=d/t;var A=Math.max(1,Math.ceil(x.width*a)+2*b)+(p?5:
+0),B=Math.max(1,Math.ceil(x.height*a)+2*b)+(p?5:0);D.setAttribute("version","1.1");D.setAttribute("width",A+"px");D.setAttribute("height",B+"px");D.setAttribute("viewBox",(f?"-0.5 -0.5":"0 0")+" "+A+" "+B);k.appendChild(D);var y=null!=k.createElementNS?k.createElementNS(mxConstants.NS_SVG,"g"):k.createElement("g");D.appendChild(y);var r=this.createSvgCanvas(y);r.foOffset=f?-.5:0;r.textOffset=f?-.5:0;r.imageOffset=f?-.5:0;r.translate(Math.floor((b/d-x.x)/t),Math.floor((b/d-x.y)/t));var m=document.createElement("textarea"),
+q=r.createAlternateContent;r.createAlternateContent=function(a,d,b,c,f,e,g,l,n,p,u,x,t){var k=this.state;if(null!=this.foAltText&&(0==c||0!=k.fontSize&&e.length<5*c/k.fontSize)){var D=this.createElement("text");D.setAttribute("x",Math.round(c/2));D.setAttribute("y",Math.round((f+k.fontSize)/2));D.setAttribute("fill",k.fontColor||"black");D.setAttribute("text-anchor","middle");D.setAttribute("font-size",Math.round(k.fontSize)+"px");D.setAttribute("font-family",k.fontFamily);(k.fontStyle&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD&&D.setAttribute("font-weight","bold");(k.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&D.setAttribute("font-style","italic");(k.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&D.setAttribute("text-decoration","underline");try{return m.innerHTML=e,D.textContent=m.value,D}catch(oa){return q.apply(this,arguments)}}else return q.apply(this,arguments)};var J=this.backgroundImage;if(null!=J){d=t/d;var C=this.view.translate,X=new mxRectangle(C.x*d,
+C.y*d,J.width*d,J.height*d);mxUtils.intersects(x,X)&&r.image(C.x,C.y,J.width,J.height,J.src,!0)}r.scale(a);r.textEnabled=g;l=null!=l?l:this.createSvgImageExport();var F=l.drawCellState;l.drawCellState=function(a,d){for(var b=a.view.graph,c=b.isCellSelected(a.cell),f=b.model.getParent(a.cell);!e&&!c&&null!=f;)c=b.isCellSelected(f),f=b.model.getParent(f);(e||c)&&F.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),r);this.updateSvgLinks(D,n,!0);return D}finally{u&&(this.useCssTransforms=
 !0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.updateSvgLinks=function(a,d,b){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++){var f=a[c].getAttribute("href");null==f&&(f=a[c].getAttribute("xlink:href"));null!=f&&(null!=d&&/^https?:\/\//.test(f)?a[c].setAttribute("target",d):b&&this.isCustomLink(f)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){return new mxSvgCanvas2D(a)};Graph.prototype.getSelectedElement=function(){var a=
 null;if(window.getSelection){var d=window.getSelection();d.getRangeAt&&d.rangeCount&&(a=d.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,d,b){for(;null!=a&&a.nodeName!=d;){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.selectNode=function(a){var d=null;if(window.getSelection){if(d=window.getSelection(),d.getRangeAt&&d.rangeCount){var b=document.createRange();b.selectNode(a);
 d.removeAllRanges();d.addRange(b)}}else(d=document.selection)&&"Control"!=d.type&&(a=d.createRange(),a.collapse(!0),b=d.createRange(),b.setEndPoint("StartToStart",a),b.select())};Graph.prototype.insertRow=function(a,d){for(var b=a.tBodies[0],c=b.rows[0].cells,f=0,e=0;e<c.length;e++)var g=c[e].getAttribute("colspan"),f=f+(null!=g?parseInt(g):1);b=b.insertRow(d);for(e=0;e<f;e++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=function(a,d){a.tBodies[0].deleteRow(d)};Graph.prototype.insertColumn=
@@ -2420,20 +2423,20 @@ HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.protot
 HoverIcons.prototype.triangleDown.src,(new Image).src=HoverIcons.prototype.triangleLeft.src,(new Image).src=HoverIcons.prototype.refreshTarget.src,(new Image).src=HoverIcons.prototype.roundDrop.src);mxVertexHandler.prototype.rotationEnabled=!0;mxVertexHandler.prototype.manageSizers=!0;mxVertexHandler.prototype.livePreview=!0;mxRubberband.prototype.defaultOpacity=30;mxConnectionHandler.prototype.outlineConnect=!0;mxCellHighlight.prototype.keepOnTop=!0;mxVertexHandler.prototype.parentHighlightEnabled=
 !0;mxVertexHandler.prototype.rotationHandleVSpacing=-20;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(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=
 function(a){return!mxEvent.isShiftDown(a.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=-24,mxConstraintHandler.prototype.getTolerance=function(a){return mxEvent.isMouseEvent(a.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=
-function(a){var d=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(d)||mxEvent.isPopupTrigger(d)&&(null==a.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))};var n=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,d){n.apply(this,arguments);mxEvent.isTouchEvent(d.getEvent())&&this.graph.isCellSelected(d.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var d=
+function(a){var d=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(d)||mxEvent.isPopupTrigger(d)&&(null==a.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))};var p=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,d){p.apply(this,arguments);mxEvent.isTouchEvent(d.getEvent())&&this.graph.isCellSelected(d.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var d=
 a.getEvent();return mxEvent.isLeftMouseButton(d)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(d)&&!mxEvent.isShiftDown(d))||this.usePopupTrigger&&mxEvent.isPopupTrigger(d)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,d){var b=null!=this.div&&"none"!=this.div.style.display,
 c=null,f=null,e=null,g=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&&(c=this.first.x,f=this.first.y,e=(this.currentX-c)/this.graph.view.scale,g=(this.currentY-f)/this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(e=this.graph.snap(e),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(e)<this.graph.tolerance&&(e=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(b){if(mxEvent.isAltDown(d.getEvent())&&this.graph.isToggleEvent(d.getEvent())){var e=new mxRectangle(this.x,
-this.y,this.width,this.height),l=this.graph.getCells(e.x,e.y,e.width,e.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(c,f,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var n=this.graph.view.getState(l[b]),u=this.graph.getCellGeometry(l[b]);null!=n&&null!=u&&(u=u.clone(),u.translate(e,g),this.graph.model.setGeometry(l[b],u))}}finally{this.graph.model.endUpdate()}}else e=
+this.y,this.width,this.height),l=this.graph.getCells(e.x,e.y,e.width,e.height);this.graph.removeSelectionCells(l)}else if(this.isSpaceEvent(d)){this.graph.model.beginUpdate();try{for(l=this.graph.getCellsBeyond(c,f,this.graph.getDefaultParent(),!0,!0),b=0;b<l.length;b++)if(this.graph.isCellMovable(l[b])){var n=this.graph.view.getState(l[b]),p=this.graph.getCellGeometry(l[b]);null!=n&&null!=p&&(p=p.clone(),p.translate(e,g),this.graph.model.setGeometry(l[b],p))}}finally{this.graph.model.endUpdate()}}else e=
 new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(e,d.getEvent());d.consume()}};mxRubberband.prototype.mouseMove=function(a,d){if(!d.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);b.x-=c.x;b.y-=c.y;var c=d.getX()+b.x,b=d.getY()+b.y,f=this.first.x-c,e=this.first.y-b,g=this.graph.tolerance;if(null!=this.div||Math.abs(f)>g||Math.abs(e)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),
 this.update(c,b),this.isSpaceEvent(d)?(c=this.x+this.width,b=this.y+this.height,f=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/f)*f,this.height=this.graph.snap(this.height/f)*f,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=c-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",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+
 "px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),d.consume()}};var g=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null);g.apply(this,arguments)};var p=(new Date).getTime(),B=0,x=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,d,b,c){x.apply(this,arguments);b!=this.currentTerminalState?(p=(new Date).getTime(),B=0):B=(new Date).getTime()-p;this.currentTerminalState=b};var t=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
-2E3<B||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&t.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,d){var b=null!=a&&0==a,c=this.state.getVisibleTerminalState(b),f=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,
-c,b):null,b=null!=(null!=f?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),f):null)?this.fixedHandleImage:null!=f&&null!=c?this.terminalHandleImage: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 y=mxVertexHandler.prototype.createSizerShape;
-mxVertexHandler.prototype.createSizerShape=function(a,d,b){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return y.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var d=this.graph.getModel(),b=d.getParent(a[0]),c=this.graph.getCellGeometry(a[0]);if(d.isEdge(b)&&null!=c&&c.relative&&(d=this.graph.view.getState(a[0]),
-null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return u.apply(this,arguments)};var A=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var d=this.graph.getModel(),b=d.getParent(a.cell),c=this.graph.getCellGeometry(a.cell);return d.isEdge(b)&&null!=c&&c.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(d=a.text.unrotatedBoundingBox||a.text.boundingBox,
-new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):A.apply(this,arguments)};var D=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,d){var b=this.graph.getModel(),c=b.getParent(this.state.cell),f=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!b.isEdge(c)||null==f||!f.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&D.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=
+this.secondDiv=null);g.apply(this,arguments)};var n=(new Date).getTime(),A=0,y=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(a,d,b,c){y.apply(this,arguments);b!=this.currentTerminalState?(n=(new Date).getTime(),A=0):A=(new Date).getTime()-n;this.currentTerminalState=b};var t=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&
+2E3<A||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&t.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,d){var b=null!=a&&0==a,c=this.state.getVisibleTerminalState(b),f=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,
+c,b):null,b=null!=(null!=f?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),f):null)?this.fixedHandleImage:null!=f&&null!=c?this.terminalHandleImage: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 x=mxVertexHandler.prototype.createSizerShape;
+mxVertexHandler.prototype.createSizerShape=function(a,d,b){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return x.apply(this,arguments)};var u=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var d=this.graph.getModel(),b=d.getParent(a[0]),c=this.graph.getCellGeometry(a[0]);if(d.isEdge(b)&&null!=c&&c.relative&&(d=this.graph.view.getState(a[0]),
+null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return u.apply(this,arguments)};var D=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var d=this.graph.getModel(),b=d.getParent(a.cell),c=this.graph.getCellGeometry(a.cell);return d.isEdge(b)&&null!=c&&c.relative&&2>a.width&&2>a.height&&null!=a.text&&null!=a.text.boundingBox?(d=a.text.unrotatedBoundingBox||a.text.boundingBox,
+new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):D.apply(this,arguments)};var B=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,d){var b=this.graph.getModel(),c=b.getParent(this.state.cell),f=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!b.isEdge(c)||null==f||!f.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&B.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=
 function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){this.state.view.graph.turnShapes([this.state.cell])};var U=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,d){U.apply(this,arguments);null!=this.graph.graphHandler.first&&null!=this.rotationShape&&null!=
 this.rotationShape.node&&(this.rotationShape.node.style.display="none")};var S=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,d){S.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var N=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){N.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",
 mxResources.get("rotateTooltip"));var d=mxUtils.bind(this,function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.selectionHandler=mxUtils.bind(this,function(a,b){d()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,
@@ -2443,27 +2446,27 @@ this.linkHint.innerHTML="";if(null!=d&&(this.linkHint.appendChild(this.graph.cre
 function(a){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(a)}));c=document.createElement("img");c.setAttribute("src",Dialog.prototype.clearImage);c.setAttribute("title",mxResources.get("removeIt",[mxResources.get("link")]));c.setAttribute("width","13");c.setAttribute("height","10");c.style.marginLeft="4px";c.style.marginBottom="-1px";c.style.cursor="pointer";this.linkHint.appendChild(c);mxEvent.addListener(c,"click",mxUtils.bind(this,function(a){this.graph.setLinkForCell(this.state.cell,
 null);mxEvent.consume(a)}))}if(null!=b)for(c=0;c<b.length;c++){var f=document.createElement("div");f.style.marginTop=null!=d||0<c?"6px":"0px";f.appendChild(this.graph.createLinkForHint(b[c].getAttribute("href"),mxUtils.getTextContent(b[c])));this.linkHint.appendChild(f)}}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var K=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){K.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,
 function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=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.selectionHandler=mxUtils.bind(this,function(d,b){a()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionHandler);
-this.changeHandler=mxUtils.bind(this,function(d,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=d||null!=b&&0<b.length)this.updateLinkHint(d,b),this.redrawHandles()};var E=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){E.apply(this,
+this.changeHandler=mxUtils.bind(this,function(d,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));a();this.redrawHandles()});this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=d||null!=b&&0<b.length)this.updateLinkHint(d,b),this.redrawHandles()};var F=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){F.apply(this,
 arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var C=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){C.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),b=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||
 "0",a),a=null!=b?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null;null==b&&(b=this.state);b=b.y+b.height;null!=d&&(b=Math.max(b,d.y+d.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b+this.verticalOffset/2+6+this.state.view.graph.tolerance)+"px"}};var M=mxVertexHandler.prototype.reset;mxVertexHandler.prototype.reset=
 function(){M.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none")};var O=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){O.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=
 null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var V=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(V.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height),
 a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+6+this.state.view.graph.tolerance)+"px"}};var T=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){T.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var W=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){W.apply(this,arguments);null!=this.linkHint&&
-(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function e(){mxCylinder.call(this)}function c(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function m(){mxActor.call(this)}function q(){mxCylinder.call(this)}function r(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function d(){mxActor.call(this)}function f(){mxActor.call(this)}function l(){mxActor.call(this)}function n(){mxActor.call(this)}function g(a,d){this.canvas=
+(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.selectionHandler&&(this.graph.getSelectionModel().removeListener(this.selectionHandler),this.selectionHandler=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function e(){mxCylinder.call(this)}function c(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function m(){mxActor.call(this)}function q(){mxCylinder.call(this)}function r(){mxActor.call(this)}function v(){mxActor.call(this)}function z(){mxActor.call(this)}function d(){mxActor.call(this)}function f(){mxActor.call(this)}function l(){mxActor.call(this)}function p(){mxActor.call(this)}function g(a,d){this.canvas=
 a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,g.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,g.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,g.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,g.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;
-this.canvas.curveTo=mxUtils.bind(this,g.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,g.prototype.arcTo)}function p(){mxRectangleShape.call(this)}function B(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function t(){mxActor.call(this)}function y(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function D(){mxCylinder.call(this)}function U(){mxShape.call(this)}function S(){mxShape.call(this)}
-function N(){mxEllipse.call(this)}function K(){mxShape.call(this)}function E(){mxShape.call(this)}function C(){mxRectangleShape.call(this)}function M(){mxShape.call(this)}function O(){mxShape.call(this)}function V(){mxShape.call(this)}function T(){mxShape.call(this)}function W(){mxShape.call(this)}function J(){mxCylinder.call(this)}function X(){mxDoubleEllipse.call(this)}function la(){mxDoubleEllipse.call(this)}function fa(){mxArrowConnector.call(this);this.spacing=0}function Y(){mxArrowConnector.call(this);
+this.canvas.curveTo=mxUtils.bind(this,g.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,g.prototype.arcTo)}function n(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function y(){mxActor.call(this)}function t(){mxActor.call(this)}function x(){mxActor.call(this)}function u(){mxRectangleShape.call(this)}function D(){mxRectangleShape.call(this)}function B(){mxCylinder.call(this)}function U(){mxShape.call(this)}function S(){mxShape.call(this)}
+function N(){mxEllipse.call(this)}function K(){mxShape.call(this)}function F(){mxShape.call(this)}function C(){mxRectangleShape.call(this)}function M(){mxShape.call(this)}function O(){mxShape.call(this)}function V(){mxShape.call(this)}function T(){mxShape.call(this)}function W(){mxShape.call(this)}function J(){mxCylinder.call(this)}function X(){mxDoubleEllipse.call(this)}function la(){mxDoubleEllipse.call(this)}function fa(){mxArrowConnector.call(this);this.spacing=0}function Y(){mxArrowConnector.call(this);
 this.spacing=0}function ca(){mxActor.call(this)}function H(){mxRectangleShape.call(this)}function I(){mxActor.call(this)}function aa(){mxActor.call(this)}function L(){mxActor.call(this)}function P(){mxActor.call(this)}function da(){mxActor.call(this)}function Z(){mxActor.call(this)}function G(){mxActor.call(this)}function ja(){mxActor.call(this)}function Q(){mxActor.call(this)}function ha(){mxActor.call(this)}function ka(){mxEllipse.call(this)}function ga(){mxEllipse.call(this)}function ba(){mxEllipse.call(this)}
-function wa(){mxRhombus.call(this)}function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function ta(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function ma(){mxActor.call(this)}function ra(){mxActor.call(this)}function ia(){mxActor.call(this)}function ea(){mxConnector.call(this)}function sa(a,d,b,c,f,e,g,l,n,u){g+=n;var F=c.clone();c.x-=f*(2*g+n);c.y-=e*(2*g+n);f*=g+n;e*=g+n;return function(){a.ellipse(F.x-f-g,F.y-e-g,2*g,2*g);u?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,
-mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),F=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,
-e);a.lineTo(c,f);a.lineTo(e,f);a.lineTo(0,f-e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=F&&(a.setFillAlpha(Math.abs(F)),a.setFillColor(0>F?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(c-e,0),a.lineTo(c,e),a.lineTo(e,e),a.close(),a.fill()),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e,e),a.lineTo(e,f),a.lineTo(0,f-e),a.close(),a.fill()),a.begin(),a.moveTo(e,f),a.lineTo(e,e),a.lineTo(0,
+function wa(){mxRhombus.call(this)}function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function ta(){mxEllipse.call(this)}function va(){mxEllipse.call(this)}function ma(){mxActor.call(this)}function ra(){mxActor.call(this)}function ia(){mxActor.call(this)}function ea(){mxConnector.call(this)}function sa(a,d,b,c,f,e,g,l,n,p){g+=n;var E=c.clone();c.x-=f*(2*g+n);c.y-=e*(2*g+n);f*=g+n;e*=g+n;return function(){a.ellipse(E.x-f-g,E.y-e-g,2*g,2*g);p?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,
+mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),E=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,
+e);a.lineTo(c,f);a.lineTo(e,f);a.lineTo(0,f-e);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=E&&(a.setFillAlpha(Math.abs(E)),a.setFillColor(0>E?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(c-e,0),a.lineTo(c,e),a.lineTo(e,e),a.close(),a.fill()),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e,e),a.lineTo(e,f),a.lineTo(0,f-e),a.close(),a.fill()),a.begin(),a.moveTo(e,f),a.lineTo(e,e),a.lineTo(0,
 0),a.moveTo(e,e),a.lineTo(c,e),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var xa=Math.tan(mxUtils.toRadians(30)),na=(.5-xa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/xa);a.translate((c-d)/2,(f-d)/2+d/4);a.moveTo(0,.25*d);a.lineTo(.5*
 d,d*na);a.lineTo(d,.25*d);a.lineTo(.5*d,(.5-na)*d);a.lineTo(0,.25*d);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.min(c,f/(.5+xa));e?(a.moveTo(0,.25*d),a.lineTo(.5*d,(.5-na)*d),a.lineTo(d,.25*d),a.moveTo(.5*d,(.5-na)*d),a.lineTo(.5*d,(1-na)*d)):(a.translate((c-d)/2,(f-d)/2),a.moveTo(0,.25*d),a.lineTo(.5*d,d*na),a.lineTo(d,.25*d),a.lineTo(d,.75*d),a.lineTo(.5*d,(1-na)*d),a.lineTo(0,
 .75*d),a.close());a.end()};mxCellRenderer.registerShape("isoCube",e);mxUtils.extend(c,mxCylinder);c.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.min(f/2,Math.round(f/8)+this.strokewidth-1);if(e&&null!=this.fill||!e&&null==this.fill)a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,d/2),a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,d/2),a.moveTo(0,d),a.curveTo(0,2*d,c,2*d,c,d),e||(a.stroke(),a.begin()),a.translate(0,-d);e||(a.moveTo(0,
 d),a.curveTo(0,-d/3,c,-d/3,c,d),a.lineTo(c,f-d),a.curveTo(c,f+d/3,0,f+d/3,0,f-d),a.close())};c.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1)*this.scale,0,0)};mxCellRenderer.registerShape("datastore",c);mxUtils.extend(k,mxCylinder);k.prototype.size=30;k.prototype.darkOpacity=0;k.prototype.paintVertexShape=function(a,d,b,c,f){var e=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),
-F=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,e);a.lineTo(c,f);a.lineTo(0,f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=F&&(a.setFillAlpha(Math.abs(F)),a.setFillColor(0>F?"#FFFFFF":"#000000"),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.close(),a.fill()),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.end(),a.stroke())};
+E=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(d,b);a.begin();a.moveTo(0,0);a.lineTo(c-e,0);a.lineTo(c,e);a.lineTo(c,f);a.lineTo(0,f);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=E&&(a.setFillAlpha(Math.abs(E)),a.setFillColor(0>E?"#FFFFFF":"#000000"),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.close(),a.fill()),a.begin(),a.moveTo(c-e,0),a.lineTo(c-e,e),a.lineTo(c,e),a.end(),a.stroke())};
 mxCellRenderer.registerShape("note",k);mxUtils.extend(m,mxActor);m.prototype.redrawPath=function(a,d,b,c,f){a.moveTo(0,0);a.quadTo(c/2,.5*f,c,0);a.quadTo(.5*c,f/2,c,f);a.quadTo(c/2,.5*f,0,f);a.quadTo(.5*c,f/2,0,0);a.end()};mxCellRenderer.registerShape("switch",m);mxUtils.extend(q,mxCylinder);q.prototype.tabWidth=60;q.prototype.tabHeight=20;q.prototype.tabPosition="right";q.prototype.redrawPath=function(a,d,b,c,f,e){d=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));
-b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var F=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);e?"left"==F?(a.moveTo(0,b),a.lineTo(d,b)):(a.moveTo(c-d,b),a.lineTo(c,b)):("left"==F?(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,b),a.lineTo(c,b)):(a.moveTo(0,b),a.lineTo(c-d,b),a.lineTo(c-d,0),a.lineTo(c,0)),a.lineTo(c,f),a.lineTo(0,f),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",q);mxUtils.extend(r,mxActor);r.prototype.size=
+b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var E=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);e?"left"==E?(a.moveTo(0,b),a.lineTo(d,b)):(a.moveTo(c-d,b),a.lineTo(c,b)):("left"==E?(a.moveTo(0,0),a.lineTo(d,0),a.lineTo(d,b),a.lineTo(c,b)):(a.moveTo(0,b),a.lineTo(c-d,b),a.lineTo(c-d,0),a.lineTo(c,0)),a.lineTo(c,f),a.lineTo(0,f),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",q);mxUtils.extend(r,mxActor);r.prototype.size=
 30;r.prototype.isRoundable=function(){return!0};r.prototype.redrawPath=function(a,d,b,c,f){d=Math.max(0,Math.min(c,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c,f),new mxPoint(0,f),new mxPoint(0,d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",r);mxUtils.extend(v,mxActor);v.prototype.size=.4;v.prototype.redrawPath=
 function(a,d,b,c,f){d=f*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,d/2);a.quadTo(c/4,1.4*d,c/2,d/2);a.quadTo(3*c/4,d*(1-1.4),c,d/2);a.lineTo(c,f-d/2);a.quadTo(3*c/4,f-1.4*d,c/2,f-d/2);a.quadTo(c/4,f-d*(1-1.4),0,f-d/2);a.lineTo(0,d/2);a.close();a.end()};v.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",this.size),b=a.width,c=a.height;if(null==this.direction||this.direction==
 mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return d*=c,new mxRectangle(a.x,a.y+d,b,c-2*d);d*=b;return new mxRectangle(a.x+d,a.y,b-2*d,c)}return a};mxCellRenderer.registerShape("tape",v);mxUtils.extend(z,mxActor);z.prototype.size=.3;z.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};z.prototype.redrawPath=function(a,d,b,c,f){d=f*Math.max(0,
@@ -2471,46 +2474,46 @@ Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(
 function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*d),0,0)}return null};mxUtils.extend(d,mxActor);d.prototype.size=.2;d.prototype.isRoundable=function(){return!0};d.prototype.redrawPath=function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
 2;this.addPoints(a,[new mxPoint(0,f),new mxPoint(d,0),new mxPoint(c,0),new mxPoint(c-d,f)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("parallelogram",d);mxUtils.extend(f,mxActor);f.prototype.size=.2;f.prototype.isRoundable=function(){return!0};f.prototype.redrawPath=function(a,d,b,c,f){d=c*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,
 f),new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",f);mxUtils.extend(l,mxActor);l.prototype.size=.5;l.prototype.redrawPath=function(a,d,b,c,f){a.setFillColor(null);d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(d,0),new mxPoint(d,f/2),new mxPoint(0,f/2),new mxPoint(d,
-f/2),new mxPoint(d,f),new mxPoint(c,f)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",l);mxUtils.extend(n,mxActor);n.prototype.redrawPath=function(a,d,b,c,f){a.setStrokeWidth(1);a.setFillColor(this.stroke);d=c/5;a.rect(0,0,d,f);a.fillAndStroke();a.rect(2*d,0,d,f);a.fillAndStroke();a.rect(4*d,0,d,f);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",n);g.prototype.moveTo=function(a,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
+f/2),new mxPoint(d,f),new mxPoint(c,f)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",l);mxUtils.extend(p,mxActor);p.prototype.redrawPath=function(a,d,b,c,f){a.setStrokeWidth(1);a.setFillColor(this.stroke);d=c/5;a.rect(0,0,d,f);a.fillAndStroke();a.rect(2*d,0,d,f);a.fillAndStroke();a.rect(4*d,0,d,f);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",p);g.prototype.moveTo=function(a,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=
 d;this.firstX=a;this.firstY=d};g.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)};g.prototype.quadTo=function(a,d,b,c){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=c};g.prototype.curveTo=function(a,d,b,c,f,e){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=f;this.lastY=e};g.prototype.arcTo=function(a,d,b,c,
-f,e,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};g.prototype.lineTo=function(a,d){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-this.lastX),f=Math.abs(d-this.lastY),e=Math.sqrt(c*c+f*f);if(2>e){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d;return}var g=Math.round(e/10),F=this.defaultVariation;5>g&&(g=5,F/=3);for(var l=b(a-this.lastX)*c/g,b=b(d-this.lastY)*f/g,
-c=c/e,f=f/e,e=0;e<g;e++){var n=(Math.random()-.5)*F;this.originalLineTo.call(this.canvas,l*e+this.lastX-n*f,b*e+this.lastY-n*c)}this.originalLineTo.call(this.canvas,a,d)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d};g.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};
+f,e,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=g};g.prototype.lineTo=function(a,d){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},c=Math.abs(a-this.lastX),f=Math.abs(d-this.lastY),e=Math.sqrt(c*c+f*f);if(2>e){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d;return}var g=Math.round(e/10),E=this.defaultVariation;5>g&&(g=5,E/=3);for(var l=b(a-this.lastX)*c/g,b=b(d-this.lastY)*f/g,
+c=c/e,f=f/e,e=0;e<g;e++){var n=(Math.random()-.5)*E;this.originalLineTo.call(this.canvas,l*e+this.lastX-n*f,b*e+this.lastY-n*c)}this.originalLineTo.call(this.canvas,a,d)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=d};g.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};
 var Ja=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new g(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ja.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Ka=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null==
 this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Ka.apply(this,arguments)};var La=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,d,b,c,f){if(null==a.handJiggle)La.apply(this,arguments);else{var e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(e||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)e||null!=this.fill&&this.fill!=mxConstants.NONE||
 (a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?e=Math.min(c/2,Math.min(f/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.min(c*e,f*e)),a.moveTo(d+e,b),a.lineTo(d+c-e,b),a.quadTo(d+c,b,d+c,b+e),a.lineTo(d+c,b+f-e),a.quadTo(d+c,b+f,d+c-e,b+f),a.lineTo(d+e,b+f),a.quadTo(d,b+f,d,b+f-e),
-a.lineTo(d,b+e),a.quadTo(d,b,d+e,b)):(a.moveTo(d,b),a.lineTo(d+c,b),a.lineTo(d+c,b+f),a.lineTo(d,b+f),a.lineTo(d,b)),a.close(),a.end(),a.fillAndStroke()}};var Ma=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,d,b,c,f){null==a.handJiggle&&Ma.apply(this,arguments)};mxUtils.extend(p,mxRectangleShape);p.prototype.size=.1;p.prototype.isHtmlAllowed=function(){return!1};p.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,
-!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=a.width,b=a.height;a=new mxRectangle(a.x,a.y,d,b);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*f,b*f));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};p.prototype.paintForeground=
-function(a,d,b,c,f){var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*g,f*g));e=Math.round(e);a.begin();a.moveTo(d+e,b);a.lineTo(d+e,b+f);a.moveTo(d+c-e,b);a.lineTo(d+c-e,b+f);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",p);mxUtils.extend(B,
-mxRectangleShape);B.prototype.paintBackground=function(a,d,b,c,f){a.setFillColor(mxConstants.NONE);a.rect(d,b,c,f);a.fill()};B.prototype.paintForeground=function(a,d,b,c,f){};mxCellRenderer.registerShape("transparent",B);mxUtils.extend(x,mxHexagon);x.prototype.size=30;x.prototype.position=.5;x.prototype.position2=.5;x.prototype.base=20;x.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};x.prototype.isRoundable=
-function(){return!0};x.prototype.redrawPath=function(a,d,b,c,f){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));
-this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f-b),new mxPoint(Math.min(c,e+l),f-b),new mxPoint(g,f),new mxPoint(Math.max(0,e),f-b),new mxPoint(0,f-b)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",x);mxUtils.extend(t,mxActor);t.prototype.size=.2;t.prototype.fixedSize=20;t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=function(a,d,b,c,f){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,
-"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(0,f),new mxPoint(d,f/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",t);mxUtils.extend(y,mxHexagon);y.prototype.size=.25;y.prototype.isRoundable=function(){return!0};y.prototype.redrawPath=
-function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.5*f),new mxPoint(c-d,f),new mxPoint(d,f),new mxPoint(0,.5*f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",y);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a,
+a.lineTo(d,b+e),a.quadTo(d,b,d+e,b)):(a.moveTo(d,b),a.lineTo(d+c,b),a.lineTo(d+c,b+f),a.lineTo(d,b+f),a.lineTo(d,b)),a.close(),a.end(),a.fillAndStroke()}};var Ma=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,d,b,c,f){null==a.handJiggle&&Ma.apply(this,arguments)};mxUtils.extend(n,mxRectangleShape);n.prototype.size=.1;n.prototype.isHtmlAllowed=function(){return!1};n.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,
+!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=a.width,b=a.height;a=new mxRectangle(a.x,a.y,d,b);var c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,c=Math.max(c,Math.min(d*f,b*f));a.x+=Math.round(c);a.width-=Math.round(2*c)}return a};n.prototype.paintForeground=
+function(a,d,b,c,f){var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*g,f*g));e=Math.round(e);a.begin();a.moveTo(d+e,b);a.lineTo(d+e,b+f);a.moveTo(d+c-e,b);a.lineTo(d+c-e,b+f);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",n);mxUtils.extend(A,
+mxRectangleShape);A.prototype.paintBackground=function(a,d,b,c,f){a.setFillColor(mxConstants.NONE);a.rect(d,b,c,f);a.fill()};A.prototype.paintForeground=function(a,d,b,c,f){};mxCellRenderer.registerShape("transparent",A);mxUtils.extend(y,mxHexagon);y.prototype.size=30;y.prototype.position=.5;y.prototype.position2=.5;y.prototype.base=20;y.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};y.prototype.isRoundable=
+function(){return!0};y.prototype.redrawPath=function(a,d,b,c,f){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),l=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"base",this.base))));
+this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,f-b),new mxPoint(Math.min(c,e+l),f-b),new mxPoint(g,f),new mxPoint(Math.max(0,e),f-b),new mxPoint(0,f-b)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",y);mxUtils.extend(t,mxActor);t.prototype.size=.2;t.prototype.fixedSize=20;t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=function(a,d,b,c,f){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,
+"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c-d,0),new mxPoint(c,f/2),new mxPoint(c-d,f),new mxPoint(0,f),new mxPoint(d,f/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",t);mxUtils.extend(x,mxHexagon);x.prototype.size=.25;x.prototype.isRoundable=function(){return!0};x.prototype.redrawPath=
+function(a,d,b,c,f){d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(d,0),new mxPoint(c-d,0),new mxPoint(c,.5*f),new mxPoint(c-d,f),new mxPoint(d,f),new mxPoint(0,.5*f)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",x);mxUtils.extend(u,mxRectangleShape);u.prototype.isHtmlAllowed=function(){return!1};u.prototype.paintForeground=function(a,
 d,b,c,f){var e=Math.min(c/5,f/5)+1;a.begin();a.moveTo(d+c/2,b+e);a.lineTo(d+c/2,b+f-e);a.moveTo(d+e,b+f/2);a.lineTo(d+c-e,b+f/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",u);var Fa=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+
-d,a.y+d,a.width-2*d,a.height-2*d)}return a};mxRhombus.prototype.paintVertexShape=function(a,d,b,c,f){Fa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var e=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&(a.setShadow(!1),Fa.apply(this,[a,d,b,c,f]))}};mxUtils.extend(A,mxRectangleShape);A.prototype.isHtmlAllowed=function(){return!1};A.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(Math.max(2,
-this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+d,a.y+d,a.width-2*d,a.height-2*d)}return a};A.prototype.paintForeground=function(a,d,b,c,f){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var e=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var e=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+
-e]];if(null!=g){var l=this.style["symbol"+e+"Align"],F=this.style["symbol"+e+"VerticalAlign"],n=this.style["symbol"+e+"Width"],u=this.style["symbol"+e+"Height"],p=this.style["symbol"+e+"Spacing"]||0,y=this.style["symbol"+e+"VSpacing"]||p,t=this.style["symbol"+e+"ArcSpacing"];null!=t&&(t*=this.getArcSize(c+this.strokewidth,f+this.strokewidth),p+=t,y+=t);var t=d,k=b,t=l==mxConstants.ALIGN_CENTER?t+(c-n)/2:l==mxConstants.ALIGN_RIGHT?t+(c-n-p):t+p,k=F==mxConstants.ALIGN_MIDDLE?k+(f-u)/2:F==mxConstants.ALIGN_BOTTOM?
-k+(f-u-y):k+y;a.save();l=new g;l.style=this.style;g.prototype.paintVertexShape.call(l,a,t,k,n,u);a.restore()}e++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",A);mxUtils.extend(D,mxCylinder);D.prototype.redrawPath=function(a,d,b,c,f,e){e?(a.moveTo(0,0),a.lineTo(c/2,f/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(0,f),a.close())};mxCellRenderer.registerShape("message",D);mxUtils.extend(U,mxShape);
+d,a.y+d,a.width-2*d,a.height-2*d)}return a};mxRhombus.prototype.paintVertexShape=function(a,d,b,c,f){Fa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var e=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&(a.setShadow(!1),Fa.apply(this,[a,d,b,c,f]))}};mxUtils.extend(D,mxRectangleShape);D.prototype.isHtmlAllowed=function(){return!1};D.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var d=(Math.max(2,
+this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+d,a.y+d,a.width-2*d,a.height-2*d)}return a};D.prototype.paintForeground=function(a,d,b,c,f){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var e=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);d+=e;b+=e;c-=2*e;f-=2*e;0<c&&0<f&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var e=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+
+e]];if(null!=g){var l=this.style["symbol"+e+"Align"],E=this.style["symbol"+e+"VerticalAlign"],n=this.style["symbol"+e+"Width"],p=this.style["symbol"+e+"Height"],u=this.style["symbol"+e+"Spacing"]||0,x=this.style["symbol"+e+"VSpacing"]||u,t=this.style["symbol"+e+"ArcSpacing"];null!=t&&(t*=this.getArcSize(c+this.strokewidth,f+this.strokewidth),u+=t,x+=t);var t=d,k=b,t=l==mxConstants.ALIGN_CENTER?t+(c-n)/2:l==mxConstants.ALIGN_RIGHT?t+(c-n-u):t+u,k=E==mxConstants.ALIGN_MIDDLE?k+(f-p)/2:E==mxConstants.ALIGN_BOTTOM?
+k+(f-p-x):k+x;a.save();l=new g;l.style=this.style;g.prototype.paintVertexShape.call(l,a,t,k,n,p);a.restore()}e++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",D);mxUtils.extend(B,mxCylinder);B.prototype.redrawPath=function(a,d,b,c,f,e){e?(a.moveTo(0,0),a.lineTo(c/2,f/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(0,f),a.close())};mxCellRenderer.registerShape("message",B);mxUtils.extend(U,mxShape);
 U.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.ellipse(c/4,0,c/2,f/4);a.fillAndStroke();a.begin();a.moveTo(c/2,f/4);a.lineTo(c/2,2*f/3);a.moveTo(c/2,f/3);a.lineTo(0,f/3);a.moveTo(c/2,f/3);a.lineTo(c,f/3);a.moveTo(c/2,2*f/3);a.lineTo(0,f);a.moveTo(c/2,2*f/3);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",U);mxUtils.extend(S,mxShape);S.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};S.prototype.paintBackground=function(a,
 d,b,c,f){a.translate(d,b);a.begin();a.moveTo(0,f/4);a.lineTo(0,3*f/4);a.end();a.stroke();a.begin();a.moveTo(0,f/2);a.lineTo(c/6,f/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,f);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",S);mxUtils.extend(N,mxEllipse);N.prototype.paintVertexShape=function(a,d,b,c,f){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(d+c/8,b+f);a.lineTo(d+7*c/8,b+f);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",N);mxUtils.extend(K,
-mxShape);K.prototype.paintVertexShape=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(c,0);a.lineTo(0,f);a.moveTo(0,0);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(E,mxShape);E.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};E.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,f/8,c,7*f/8);a.fillAndStroke()};
-E.prototype.paintForeground=function(a,d,b,c,f){a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,f/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",E);mxUtils.extend(C,mxRectangleShape);C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,d)};C.prototype.paintBackground=function(a,d,b,c,
+mxShape);K.prototype.paintVertexShape=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(c,0);a.lineTo(0,f);a.moveTo(0,0);a.lineTo(c,f);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",K);mxUtils.extend(F,mxShape);F.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};F.prototype.paintBackground=function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,0);a.end();a.stroke();a.ellipse(0,f/8,c,7*f/8);a.fillAndStroke()};
+F.prototype.paintForeground=function(a,d,b,c,f){a.begin();a.moveTo(3*c/8,f/8*1.1);a.lineTo(5*c/8,f/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",F);mxUtils.extend(C,mxRectangleShape);C.prototype.size=40;C.prototype.isHtmlAllowed=function(){return!1};C.prototype.getLabelBounds=function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,d)};C.prototype.paintBackground=function(a,d,b,c,
 f){var e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,d,b,c,e):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=C&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,d,b,c,e),a.restore()));e<f&&(a.setDashed(!0),a.begin(),a.moveTo(d+c/2,b+e),a.lineTo(d+c/2,b+f),a.end(),a.stroke())};C.prototype.paintForeground=function(a,
 d,b,c,f){var e=Math.max(0,Math.min(f,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,d,b,c,Math.min(f,e))};mxCellRenderer.registerShape("umlLifeline",C);mxUtils.extend(M,mxShape);M.prototype.width=60;M.prototype.height=30;M.prototype.corner=10;M.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style,
-"height",this.height)*this.scale))};M.prototype.paintBackground=function(a,d,b,c,f){var e=this.corner,g=Math.min(c,Math.max(e,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(f,Math.max(1.5*e,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),F=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);F!=mxConstants.NONE&&(a.setFillColor(F),a.rect(d,b,c,f),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
+"height",this.height)*this.scale))};M.prototype.paintBackground=function(a,d,b,c,f){var e=this.corner,g=Math.min(c,Math.max(e,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),l=Math.min(f,Math.max(1.5*e,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),E=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);E!=mxConstants.NONE&&(a.setFillColor(E),a.rect(d,b,c,f),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=
 mxConstants.NONE?(this.getGradientBounds(a,d,b,c,f),a.setGradient(this.fill,this.gradient,d,b,c,f,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(d,b);a.lineTo(d+g,b);a.lineTo(d+g,b+Math.max(0,l-1.5*e));a.lineTo(d+Math.max(0,g-e),b+l);a.lineTo(d,b+l);a.close();a.fillAndStroke();a.begin();a.moveTo(d+g,b);a.lineTo(d+c,b);a.lineTo(d+c,b+f);a.lineTo(d,b+f);a.lineTo(d,b+l);a.stroke()};mxCellRenderer.registerShape("umlFrame",M);mxPerimeter.LifelinePerimeter=function(a,d,b,c){c=C.prototype.size;
 null!=d&&(c=mxUtils.getValue(d.style,"size",c)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;b.x<a.getCenterX()&&(d=-1*(d+1));return new mxPoint(a.getCenterX()+d,Math.min(a.y+a.height,Math.max(a.y+c,b.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,d,b,c){c=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter);
 mxPerimeter.BackbonePerimeter=function(a,d,b,c){c=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(c+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return b.x<a.getCenterX()&&(c=-1*(c+1)),new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y,b.y)));b.y<a.getCenterY()&&(c=-1*(c+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,b.x)),
-a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,d,b,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(d.style,"size",x.prototype.size))*d.view.scale))),d.style),d,b,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,f){var e=d.prototype.size;
-null!=b&&(e=mxUtils.getValue(b.style,"size",e));var g=a.x,l=a.y,F=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l+e),new mxPoint(g+F,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l)]):(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+F,l),new mxPoint(g+F-e,l+n),new mxPoint(g,
-l+n),new mxPoint(g+e,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);f&&(c.x<g||c.x>g+F?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(l,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,d,b,c){var e=f.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,"size",e));var g=a.x,l=a.y,F=a.width,n=a.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
-d==mxConstants.DIRECTION_EAST?(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+F-e,l),new mxPoint(g+F,l+n),new mxPoint(g,l+n),new mxPoint(g+e,l)]):d==mxConstants.DIRECTION_WEST?(e=F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l),new mxPoint(g+F-e,l+n),new mxPoint(g+e,l+n),new mxPoint(g,l)]):d==mxConstants.DIRECTION_NORTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+e),new mxPoint(g+F,l),new mxPoint(g+F,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l+e)]):(e=n*Math.max(0,
-Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F,l+e),new mxPoint(g+F,l+n-e),new mxPoint(g,l+n),new mxPoint(g,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);c&&(b.x<g||b.x>g+F?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,d,b,c){var f="0"!=mxUtils.getValue(d.style,"fixedSize","0"),e=f?t.prototype.fixedSize:t.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,
-"size",e));var g=a.x,l=a.y,F=a.width,n=a.height,u=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(f=f?Math.max(0,Math.min(F,e)):F*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+F-f,l),new mxPoint(g+F,a),new mxPoint(g+F-f,l+n),new mxPoint(g,l+n),new mxPoint(g+f,a),new mxPoint(g,l)]):d==mxConstants.DIRECTION_WEST?(f=f?Math.max(0,Math.min(F,e)):F*Math.max(0,
-Math.min(1,e)),l=[new mxPoint(g+f,l),new mxPoint(g+F,l),new mxPoint(g+F-f,a),new mxPoint(g+F,l+n),new mxPoint(g+f,l+n),new mxPoint(g,a),new mxPoint(g+f,l)]):d==mxConstants.DIRECTION_NORTH?(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+f),new mxPoint(u,l),new mxPoint(g+F,l+f),new mxPoint(g+F,l+n),new mxPoint(u,l+n-f),new mxPoint(g,l+n),new mxPoint(g,l+f)]):(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(u,l+f),new mxPoint(g+
-F,l),new mxPoint(g+F,l+n-f),new mxPoint(u,l+n),new mxPoint(g,l+n-f),new mxPoint(g,l)]);u=new mxPoint(u,a);c&&(b.x<g||b.x>g+F?u.y=b.y:u.x=b.x);return mxUtils.getPerimeterPoint(l,u,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,d,b,c){var f=y.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));var e=a.x,g=a.y,l=a.width,F=a.height,n=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,
-mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(f=F*Math.max(0,Math.min(1,f)),g=[new mxPoint(n,g),new mxPoint(e+l,g+f),new mxPoint(e+l,g+F-f),new mxPoint(n,g+F),new mxPoint(e,g+F-f),new mxPoint(e,g+f),new mxPoint(n,g)]):(f=l*Math.max(0,Math.min(1,f)),g=[new mxPoint(e+f,g),new mxPoint(e+l-f,g),new mxPoint(e+l,a),new mxPoint(e+l-f,g+F),new mxPoint(e+f,g+F),new mxPoint(e,a),new mxPoint(e+f,g)]);n=new mxPoint(n,a);c&&(b.x<e||b.x>e+
-l?n.y=b.y:n.x=b.x);return mxUtils.getPerimeterPoint(g,n,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(d,b);a.ellipse((c-e)/2,0,e,e);a.fillAndStroke();a.begin();a.moveTo(c/2,e);a.lineTo(c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(V,mxShape);V.prototype.size=
+a.getCenterY()+c)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,d,b,c){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(d.style,"size",y.prototype.size))*d.view.scale))),d.style),d,b,c)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,c,f){var e=d.prototype.size;
+null!=b&&(e=mxUtils.getValue(b.style,"size",e));var g=a.x,l=a.y,E=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+E,l+e),new mxPoint(g+E,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l)]):(e=E*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+E,l),new mxPoint(g+E-e,l+n),new mxPoint(g,
+l+n),new mxPoint(g+e,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);f&&(c.x<g||c.x>g+E?a.y=c.y:a.x=c.x);return mxUtils.getPerimeterPoint(l,a,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,d,b,c){var e=f.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,"size",e));var g=a.x,l=a.y,E=a.width,n=a.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;
+d==mxConstants.DIRECTION_EAST?(e=E*Math.max(0,Math.min(1,e)),l=[new mxPoint(g+e,l),new mxPoint(g+E-e,l),new mxPoint(g+E,l+n),new mxPoint(g,l+n),new mxPoint(g+e,l)]):d==mxConstants.DIRECTION_WEST?(e=E*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+E,l),new mxPoint(g+E-e,l+n),new mxPoint(g+e,l+n),new mxPoint(g,l)]):d==mxConstants.DIRECTION_NORTH?(e=n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+e),new mxPoint(g+E,l),new mxPoint(g+E,l+n),new mxPoint(g,l+n-e),new mxPoint(g,l+e)]):(e=n*Math.max(0,
+Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+E,l+e),new mxPoint(g+E,l+n-e),new mxPoint(g,l+n),new mxPoint(g,l)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);c&&(b.x<g||b.x>g+E?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(l,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,d,b,c){var f="0"!=mxUtils.getValue(d.style,"fixedSize","0"),e=f?t.prototype.fixedSize:t.prototype.size;null!=d&&(e=mxUtils.getValue(d.style,
+"size",e));var g=a.x,l=a.y,E=a.width,n=a.height,p=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(f=f?Math.max(0,Math.min(E,e)):E*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(g+E-f,l),new mxPoint(g+E,a),new mxPoint(g+E-f,l+n),new mxPoint(g,l+n),new mxPoint(g+f,a),new mxPoint(g,l)]):d==mxConstants.DIRECTION_WEST?(f=f?Math.max(0,Math.min(E,e)):E*Math.max(0,
+Math.min(1,e)),l=[new mxPoint(g+f,l),new mxPoint(g+E,l),new mxPoint(g+E-f,a),new mxPoint(g+E,l+n),new mxPoint(g+f,l+n),new mxPoint(g,a),new mxPoint(g+f,l)]):d==mxConstants.DIRECTION_NORTH?(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l+f),new mxPoint(p,l),new mxPoint(g+E,l+f),new mxPoint(g+E,l+n),new mxPoint(p,l+n-f),new mxPoint(g,l+n),new mxPoint(g,l+f)]):(f=f?Math.max(0,Math.min(n,e)):n*Math.max(0,Math.min(1,e)),l=[new mxPoint(g,l),new mxPoint(p,l+f),new mxPoint(g+
+E,l),new mxPoint(g+E,l+n-f),new mxPoint(p,l+n),new mxPoint(g,l+n-f),new mxPoint(g,l)]);p=new mxPoint(p,a);c&&(b.x<g||b.x>g+E?p.y=b.y:p.x=b.x);return mxUtils.getPerimeterPoint(l,p,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,d,b,c){var f=x.prototype.size;null!=d&&(f=mxUtils.getValue(d.style,"size",f));var e=a.x,g=a.y,l=a.width,n=a.height,E=a.getCenterX();a=a.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,
+mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(f=n*Math.max(0,Math.min(1,f)),g=[new mxPoint(E,g),new mxPoint(e+l,g+f),new mxPoint(e+l,g+n-f),new mxPoint(E,g+n),new mxPoint(e,g+n-f),new mxPoint(e,g+f),new mxPoint(E,g)]):(f=l*Math.max(0,Math.min(1,f)),g=[new mxPoint(e+f,g),new mxPoint(e+l-f,g),new mxPoint(e+l,a),new mxPoint(e+l-f,g+n),new mxPoint(e+f,g+n),new mxPoint(e,a),new mxPoint(e+f,g)]);E=new mxPoint(E,a);c&&(b.x<e||b.x>e+
+l?E.y=b.y:E.x=b.x);return mxUtils.getPerimeterPoint(g,E,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(O,mxShape);O.prototype.size=10;O.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(d,b);a.ellipse((c-e)/2,0,e,e);a.fillAndStroke();a.begin();a.moveTo(c/2,e);a.lineTo(c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",O);mxUtils.extend(V,mxShape);V.prototype.size=
 10;V.prototype.inset=2;V.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(d,b);a.begin();a.moveTo(c/2,e+g);a.lineTo(c/2,f);a.end();a.stroke();a.begin();a.moveTo((c-e)/2-g,e/2);a.quadTo((c-e)/2-g,e+g,c/2,e+g);a.quadTo((c+e)/2+g,e+g,(c+e)/2+g,e/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",V);mxUtils.extend(T,mxShape);T.prototype.paintBackground=
 function(a,d,b,c,f){a.translate(d,b);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,0,f);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",T);mxUtils.extend(W,mxShape);W.prototype.inset=2;W.prototype.paintBackground=function(a,d,b,c,f){var e=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(d,b);a.ellipse(0,e,c-2*e,f-2*e);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c/2,f);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",
 W);mxUtils.extend(J,mxCylinder);J.prototype.jettyWidth=32;J.prototype.jettyHeight=12;J.prototype.redrawPath=function(a,d,b,c,f,e){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=g/2;var g=b+g/2,l=.3*f-d/2,n=.7*f-d/2;e?(a.moveTo(b,l),a.lineTo(g,l),a.lineTo(g,l+d),a.lineTo(b,l+d),a.moveTo(b,n),a.lineTo(g,n),a.lineTo(g,n+d),a.lineTo(b,n+d)):(a.moveTo(b,0),a.lineTo(c,0),a.lineTo(c,f),a.lineTo(b,f),
@@ -2537,12 +2540,12 @@ f):a.moveTo(d,b+f),"1"==mxUtils.getValue(this.style,"left","1")&&a.lineTo(d,b-th
 va);mxUtils.extend(ma,mxActor);ma.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/2);a.moveTo(0,0);a.lineTo(c-d,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c-d,f);a.lineTo(0,f);a.close();a.end()};mxCellRenderer.registerShape("delay",ma);mxUtils.extend(ra,mxActor);ra.prototype.size=.2;ra.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(f,c);var e=Math.max(0,Math.min(d,d*parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=(f-e)/2;b=d+e;var g=(c-e)/2,e=g+e;a.moveTo(0,d);a.lineTo(g,d);a.lineTo(g,
 0);a.lineTo(e,0);a.lineTo(e,d);a.lineTo(c,d);a.lineTo(c,b);a.lineTo(e,b);a.lineTo(e,f);a.lineTo(g,f);a.lineTo(g,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross",ra);mxUtils.extend(ia,mxActor);ia.prototype.size=.25;ia.prototype.redrawPath=function(a,d,b,c,f){d=Math.min(c,f/2);b=Math.min(c-d,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,f/2);a.lineTo(b,0);a.lineTo(c-d,0);a.quadTo(c,0,c,f/2);a.quadTo(c,f,c-d,f);a.lineTo(b,f);a.close();a.end()};
 mxCellRenderer.registerShape("display",ia);mxUtils.extend(ea,mxConnector);ea.prototype.origPaintEdgeShape=ea.prototype.paintEdgeShape;ea.prototype.paintEdgeShape=function(a,d,b){for(var c=[],f=0;f<d.length;f++)c.push(mxUtils.clone(d[f]));var f=a.state.dashed,e=a.state.fixDash;ea.prototype.origPaintEdgeShape.apply(this,[a,c,b]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(f,e),ea.prototype.origPaintEdgeShape.apply(this,
-[a,d,b])))};mxCellRenderer.registerShape("filledEdge",ea);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==d.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,d,b,c,f,e,g,l,n,u){var p=f*(g+n+1),y=e*(g+n+1);return function(){a.begin();
-a.moveTo(c.x-p/2-y/2,c.y-y/2+p/2);a.lineTo(c.x+y/2-3*p/2,c.y-3*y/2-p/2);a.stroke()}});mxMarker.addMarker("cross",function(a,d,b,c,f,e,g,l,n,u){var p=f*(g+n+1),y=e*(g+n+1);return function(){a.begin();a.moveTo(c.x-p/2-y/2,c.y-y/2+p/2);a.lineTo(c.x+y/2-3*p/2,c.y-3*y/2-p/2);a.moveTo(c.x-p/2+y/2,c.y-y/2-p/2);a.lineTo(c.x-y/2-3*p/2,c.y-3*y/2+p/2);a.stroke()}});mxMarker.addMarker("circle",sa);mxMarker.addMarker("circlePlus",function(a,d,b,c,f,e,g,l,n,u){var p=c.clone(),y=sa.apply(this,arguments),t=f*(g+
-2*n),k=e*(g+2*n);return function(){y.apply(this,arguments);a.begin();a.moveTo(p.x-f*n,p.y-e*n);a.lineTo(p.x-2*t+f*n,p.y-2*k+e*n);a.moveTo(p.x-t-k+e*n,p.y-k+t-f*n);a.lineTo(p.x+k-t-e*n,p.y-k-t+f*n);a.stroke()}});mxMarker.addMarker("async",function(a,d,b,c,f,e,g,l,n,p){d=f*n*1.118;b=e*n*1.118;f*=g+n;e*=g+n;var u=c.clone();u.x-=d;u.y-=b;c.x+=1*-f-d;c.y+=1*-e-b;return function(){a.begin();a.moveTo(u.x,u.y);l?a.lineTo(u.x-f-e/2,u.y-e+f/2):a.lineTo(u.x+e/2-f,u.y-e-f/2);a.lineTo(u.x-f,u.y-e);a.close();p?
-a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(d,b,c,f,e,g,l,n,u,p){e*=l+u;g*=l+u;var y=f.clone();return function(){d.begin();d.moveTo(y.x,y.y);n?d.lineTo(y.x-e-g/a,y.y-g+e/a):d.lineTo(y.x+g/a-e,y.y-g-e/a);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ga=function(a,d,b){return ya(a,["width"],d,function(d,c,f,e,g){g=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(e.x+c*d/4+f*g/2,e.y+f*d/4-c*g/2)},function(d,c,f,e,g,
-l){d=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));a.style.width=Math.round(2*d)/a.view.scale-b})},ya=function(a,d,b,c,f){return R(a,d,function(d){var f=a.absolutePoints,e=f.length-1;d=a.view.translate;var g=a.view.scale,l=b?f[0]:f[e],f=b?f[1]:f[e-1],e=f.x-l.x,n=f.y-l.y,u=Math.sqrt(e*e+n*n),l=c.call(this,u,e/u,n/u,l,f);return new mxPoint(l.x/g-d.x,l.y/g-d.y)},function(d,c,e){var g=a.absolutePoints,l=g.length-1;d=a.view.translate;var n=a.view.scale,u=b?g[0]:g[l],g=b?g[1]:g[l-1],l=g.x-u.x,
-p=g.y-u.y,y=Math.sqrt(l*l+p*p);c.x=(c.x+d.x)*n;c.y=(c.y+d.y)*n;f.call(this,y,l/y,p/y,u,g,c,e)})},oa=function(a){return function(d){return[R(d,["arrowWidth","arrowSize"],function(d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",P.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",P.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-b)*d.height/2)},function(d,b){this.state.style.arrowWidth=Math.max(0,Math.min(1,
+[a,d,b])))};mxCellRenderer.registerShape("filledEdge",ea);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var d=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==d.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,d,b,c,f,e,g,l,n,p){var u=f*(g+n+1),x=e*(g+n+1);return function(){a.begin();
+a.moveTo(c.x-u/2-x/2,c.y-x/2+u/2);a.lineTo(c.x+x/2-3*u/2,c.y-3*x/2-u/2);a.stroke()}});mxMarker.addMarker("cross",function(a,d,b,c,f,e,g,l,n,p){var u=f*(g+n+1),x=e*(g+n+1);return function(){a.begin();a.moveTo(c.x-u/2-x/2,c.y-x/2+u/2);a.lineTo(c.x+x/2-3*u/2,c.y-3*x/2-u/2);a.moveTo(c.x-u/2+x/2,c.y-x/2-u/2);a.lineTo(c.x-x/2-3*u/2,c.y-3*x/2+u/2);a.stroke()}});mxMarker.addMarker("circle",sa);mxMarker.addMarker("circlePlus",function(a,d,b,c,f,e,g,l,n,p){var u=c.clone(),x=sa.apply(this,arguments),t=f*(g+
+2*n),k=e*(g+2*n);return function(){x.apply(this,arguments);a.begin();a.moveTo(u.x-f*n,u.y-e*n);a.lineTo(u.x-2*t+f*n,u.y-2*k+e*n);a.moveTo(u.x-t-k+e*n,u.y-k+t-f*n);a.lineTo(u.x+k-t-e*n,u.y-k-t+f*n);a.stroke()}});mxMarker.addMarker("async",function(a,d,b,c,f,e,g,l,n,u){d=f*n*1.118;b=e*n*1.118;f*=g+n;e*=g+n;var p=c.clone();p.x-=d;p.y-=b;c.x+=1*-f-d;c.y+=1*-e-b;return function(){a.begin();a.moveTo(p.x,p.y);l?a.lineTo(p.x-f-e/2,p.y-e+f/2):a.lineTo(p.x+e/2-f,p.y-e-f/2);a.lineTo(p.x-f,p.y-e);a.close();u?
+a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(d,b,c,f,e,g,l,n,p,u){e*=l+p;g*=l+p;var x=f.clone();return function(){d.begin();d.moveTo(x.x,x.y);n?d.lineTo(x.x-e-g/a,x.y-g+e/a):d.lineTo(x.x+g/a-e,x.y-g-e/a);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ga=function(a,d,b){return ya(a,["width"],d,function(d,c,f,e,g){g=a.shape.getEdgeWidth()*a.view.scale+b;return new mxPoint(e.x+c*d/4+f*g/2,e.y+f*d/4-c*g/2)},function(d,c,f,e,g,
+l){d=Math.sqrt(mxUtils.ptSegDistSq(e.x,e.y,g.x,g.y,l.x,l.y));a.style.width=Math.round(2*d)/a.view.scale-b})},ya=function(a,d,b,c,f){return R(a,d,function(d){var f=a.absolutePoints,e=f.length-1;d=a.view.translate;var g=a.view.scale,l=b?f[0]:f[e],f=b?f[1]:f[e-1],e=f.x-l.x,n=f.y-l.y,p=Math.sqrt(e*e+n*n),l=c.call(this,p,e/p,n/p,l,f);return new mxPoint(l.x/g-d.x,l.y/g-d.y)},function(d,c,e){var g=a.absolutePoints,l=g.length-1;d=a.view.translate;var n=a.view.scale,p=b?g[0]:g[l],g=b?g[1]:g[l-1],l=g.x-p.x,
+u=g.y-p.y,x=Math.sqrt(l*l+u*u);c.x=(c.x+d.x)*n;c.y=(c.y+d.y)*n;f.call(this,x,l/x,u/x,p,g,c,e)})},oa=function(a){return function(d){return[R(d,["arrowWidth","arrowSize"],function(d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",P.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",P.prototype.arrowSize)));return new mxPoint(d.x+(1-c)*d.width,d.y+(1-b)*d.height/2)},function(d,b){this.state.style.arrowWidth=Math.max(0,Math.min(1,
 Math.abs(d.y+d.height/2-b.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(d.x+d.width-b.x)/d.width))})]}},Ea=function(a,d,b){return function(c){var f=[R(c,["size"],function(b){var c=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*a;return new mxPoint(b.x+c,b.y+c)},function(d,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,b.x-d.x),Math.min(d.height,b.y-d.y)))/a)})];b&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,
 !1)&&f.push(qa(c));return f}},Aa=function(a,d,b,c,f){b=null!=b?b:1;return function(e){var g=[R(e,["size"],function(d){var b=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,"size",b?f:a));return new mxPoint(d.x+Math.max(0,Math.min(d.width,c*(b?1:d.width))),d.getCenterY())},function(a,d,c){var g=null!=f?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null;a=g?d.x-a.x:Math.max(0,Math.min(b,(d.x-a.x)/a.width));g&&!mxEvent.isAltDown(c.getEvent())&&
 (a=e.view.graph.snap(a));this.state.style.size=a},null,c)];d&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(qa(e));return g}},Ha=function(a){return function(d){var b=[R(d,["size"],function(d){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size))));return new mxPoint(d.x+b*d.width*.75,d.y+d.height/4)},function(d,b){this.state.style.size=Math.max(0,Math.min(a,(b.x-d.x)/(.75*d.width)))},null,!0)];mxUtils.getValue(d.style,mxConstants.STYLE_ROUNDED,
@@ -2561,25 +2564,25 @@ a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(n.getEvent())||(Math.abs(
 mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,b))):new mxPoint(d.x+Math.max(0,Math.min(d.width,b)),d.getCenterY())},function(d,b){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,b.y-d.y))):Math.round(Math.max(0,Math.min(d.width,b.x-d.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b=
 parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(qa(a,b/2))}return d},label:za(),ext:za(),rectangle:za(),triangle:za(),rhombus:za(),umlLifeline:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",C.prototype.size))));return new mxPoint(a.getCenterX(),a.y+d)},function(a,d){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))},!1)]},umlFrame:function(a){return[R(a,
 ["width","height"],function(a){var d=Math.max(M.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",M.prototype.width))),b=Math.max(1.5*M.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",M.prototype.height)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.width=Math.round(Math.max(M.prototype.corner,Math.min(a.width,d.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*M.prototype.corner,Math.min(a.height,d.y-a.y)))},!1)]},
-process:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",p.prototype.size))));return new mxPoint(a.x+a.width*d,a.y+a.height/4)},function(a,d){this.state.style.size=Math.max(0,Math.min(.5,(d.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},cross:function(a){return[R(a,["size"],function(a){var d=Math.min(a.width,a.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+process:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",n.prototype.size))));return new mxPoint(a.x+a.width*d,a.y+a.height/4)},function(a,d){this.state.style.size=Math.max(0,Math.min(.5,(d.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},cross:function(a){return[R(a,["size"],function(a){var d=Math.min(a.width,a.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
 "size",ra.prototype.size)))*d/2;return new mxPoint(a.getCenterX()-d,a.getCenterY()-d)},function(a,d){var b=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-d.y)/b*2,Math.max(0,a.getCenterX()-d.x)/b*2)))})]},note:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(a.x+a.width-d,a.y+d)},function(a,d){this.state.style.size=
 Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-d.x),Math.min(a.height,d.y-a.y))))})]},manualInput:function(a){var d=[R(a,["size"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",ca.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*d/4)},function(a,d){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(d.y-a.y)/3)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},dataStorage:function(a){return[R(a,
-["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.x+(1-d)*a.width,a.getCenterY())},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-d.x)/a.width))})]},callout:function(a){var d=[R(a,["size","position"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position)));
-mxUtils.getValue(this.state.style,"base",x.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-d)},function(a,d){mxUtils.getValue(this.state.style,"base",x.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["position2"],function(a){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",x.prototype.position2)));return new mxPoint(a.x+
-d*a.width,a.y+a.height)},function(a,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["base"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position))),c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",x.prototype.base)));return new mxPoint(a.x+Math.min(a.width,b*a.width+c),a.y+a.height-
-d)},function(a,d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",x.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,d.x-a.x-b*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},internalStorage:function(a){var d=[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",H.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",
+["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(a.x+(1-d)*a.width,a.getCenterY())},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-d.x)/a.width))})]},callout:function(a){var d=[R(a,["size","position"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",y.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",y.prototype.position)));
+mxUtils.getValue(this.state.style,"base",y.prototype.base);return new mxPoint(a.x+b*a.width,a.y+a.height-d)},function(a,d){mxUtils.getValue(this.state.style,"base",y.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(a.height,a.y+a.height-d.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["position2"],function(a){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",y.prototype.position2)));return new mxPoint(a.x+
+d*a.width,a.y+a.height)},function(a,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-a.x)/a.width)))/100}),R(a,["base"],function(a){var d=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",y.prototype.size))),b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",y.prototype.position))),c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"base",y.prototype.base)));return new mxPoint(a.x+Math.min(a.width,b*a.width+c),a.y+a.height-
+d)},function(a,d){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",y.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(a.width,d.x-a.x-b*a.width)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},internalStorage:function(a){var d=[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",H.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",
 H.prototype.dy)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,d.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(qa(a));return d},corner:function(a){return[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",I.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",
 I.prototype.dy)));return new mxPoint(a.x+d,a.y+b)},function(a,d){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,d.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},tee:function(a){return[R(a,["dx","dy"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",L.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",L.prototype.dy)));return new mxPoint(a.x+(a.width+d)/2,a.y+b)},function(a,d){this.state.style.dx=
 Math.round(Math.max(0,2*Math.min(a.width/2,d.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},singleArrow:oa(1),doubleArrow:oa(.5),folder:function(a){return[R(a,["tabWidth","tabHeight"],function(a){var d=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",q.prototype.tabWidth))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"tabHeight",q.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",q.prototype.tabPosition)==
 mxConstants.ALIGN_RIGHT&&(d=a.width-d);return new mxPoint(a.x+d,a.y+b)},function(a,d){var b=Math.max(0,Math.min(a.width,d.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",q.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);this.state.style.tabWidth=Math.round(b);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,d.y-a.y)))})]},document:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",z.prototype.size))));
 return new mxPoint(a.x+3*a.width/4,a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},tape:function(a){return[R(a,["size"],function(a){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",v.prototype.size))));return new mxPoint(a.getCenterX(),a.y+d*a.height/2)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[R(a,["size"],function(a){var d=
-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},step:Aa(t.prototype.size,!0,null,!0,t.prototype.fixedSize),hexagon:Aa(y.prototype.size,!0,.5,!0),curlyBracket:Aa(l.prototype.size,!1),display:Aa(ia.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,r.prototype.size,!0),loopLimit:Ea(.5,Q.prototype.size,
+Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-d)*a.height)},function(a,d){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-d.y)/a.height))})]},step:Aa(t.prototype.size,!0,null,!0,t.prototype.fixedSize),hexagon:Aa(x.prototype.size,!0,.5,!0),curlyBracket:Aa(l.prototype.size,!1),display:Aa(ia.prototype.size,!1),cube:Ea(1,a.prototype.size,!1),card:Ea(.5,r.prototype.size,!0),loopLimit:Ea(.5,Q.prototype.size,
 !0),trapezoid:Ha(.5),parallelogram:Ha(1)};Graph.createHandle=R;Graph.handleFactory=Ba;mxVertexHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()&&this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=Ba[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&&(a=Ba[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null};
 mxEdgeHandler.prototype.createCustomHandles=function(){if(1==this.state.view.graph.getSelectionCount()){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ba[a];if(null!=a)return a(this.state)}return null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ca=new mxPoint(1,0),Da=new mxPoint(1,0),oa=mxUtils.toRadians(-30),Ca=mxUtils.getRotatedPoint(Ca,Math.cos(oa),Math.sin(oa)),oa=mxUtils.toRadians(-150),
-Da=mxUtils.getRotatedPoint(Da,Math.cos(oa),Math.sin(oa));mxEdgeStyle.IsometricConnector=function(a,d,b,c,f){var e=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,l=g[0],g=g[g.length-1];null!=c&&(c=e.transformControlPoint(a,c));null==l&&null!=d&&(l=new mxPoint(d.getCenterX(),d.getCenterY()));null==g&&null!=b&&(g=new mxPoint(b.getCenterX(),b.getCenterY()));var n=Ca.x,u=Ca.y,p=Da.x,y=Da.y,t="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=l){a=function(a,d,
-b){a-=k.x;var c=d-k.y;d=(y*a-p*c)/(n*y-u*p);a=(u*a-n*c)/(u*p-n*y);t?(b&&(k=new mxPoint(k.x+n*d,k.y+u*d),f.push(k)),k=new mxPoint(k.x+p*a,k.y+y*a)):(b&&(k=new mxPoint(k.x+p*a,k.y+y*a),f.push(k)),k=new mxPoint(k.x+n*d,k.y+u*d));f.push(k)};var k=l;null==c&&(c=new mxPoint(l.x+(g.x-l.x)/2,l.y+(g.y-l.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Na=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,d){if(d==
+Da=mxUtils.getRotatedPoint(Da,Math.cos(oa),Math.sin(oa));mxEdgeStyle.IsometricConnector=function(a,d,b,c,f){var e=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,l=g[0],g=g[g.length-1];null!=c&&(c=e.transformControlPoint(a,c));null==l&&null!=d&&(l=new mxPoint(d.getCenterX(),d.getCenterY()));null==g&&null!=b&&(g=new mxPoint(b.getCenterX(),b.getCenterY()));var n=Ca.x,p=Ca.y,u=Da.x,x=Da.y,t="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=l){a=function(a,d,
+b){a-=k.x;var c=d-k.y;d=(x*a-u*c)/(n*x-p*u);a=(p*a-n*c)/(p*u-n*x);t?(b&&(k=new mxPoint(k.x+n*d,k.y+p*d),f.push(k)),k=new mxPoint(k.x+u*a,k.y+x*a)):(b&&(k=new mxPoint(k.x+u*a,k.y+x*a),f.push(k)),k=new mxPoint(k.x+n*d,k.y+p*d));f.push(k)};var k=l;null==c&&(c=new mxPoint(l.x+(g.x-l.x)/2,l.y+(g.y-l.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Na=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,d){if(d==
 mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Na.apply(this,arguments)};b.prototype.constraints=[];e.prototype.getConstraints=function(a,d,b){a=[];var c=Math.tan(mxUtils.toRadians(30)),f=(.5-c)/2,c=Math.min(d,b/(.5+c));d=(d-c)/2;b=(b-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+c*f));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,
-b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,b+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+(1-f)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.75*c));return a};x.prototype.getConstraints=function(a,d,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",
+b+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+c,b+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d+.5*c,b+(1-f)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b+.75*c));return a};y.prototype.getConstraints=function(a,d,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",
 this.position));var f=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
 0),!1,null,d,.5*(b-c)));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,b-c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(b-c)));d>=2*c&&a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return a};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
 0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];
@@ -2627,7 +2630,7 @@ this.addAction("open...",function(){window.openNew=!0;window.openKey="open";b.op
 320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){b.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){b.saveFile(!0)},null,null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){b.showDialog((new ExportDialog(b)).container,300,230,!0,!0)});this.addAction("editDiagram...",function(){var a=new EditDiagramDialog(b);b.showDialog(a.container,620,420,!0,!1);a.init()});this.addAction("pageSetup...",
 function(){b.showDialog((new PageSetupDialog(b)).container,320,220,!0,!0)}).isEnabled=k;this.addAction("print...",function(){b.showDialog((new PrintDialog(b)).container,300,180,!0,!0)},null,"sprite-print",Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(c,null,10,10)});this.addAction("undo",function(){b.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){b.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",
 function(){mxClipboard.cut(c)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){mxClipboard.copy(c)},null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&mxClipboard.paste(c)},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(a){if(c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())){c.getModel().beginUpdate();try{var b=mxClipboard.paste(c);if(null!=b){a=!0;for(var e=0;e<b.length&&
-a;e++)a=a&&c.model.isEdge(b[e]);var d=c.view.translate,f=c.view.scale,l=d.x,n=d.y,d=null;if(1==b.length&&a){var g=c.getCellGeometry(b[0]);null!=g&&(d=g.getTerminalPoint(!0))}d=null!=d?d:c.getBoundingBoxFromGeometry(b,a);if(null!=d){var p=Math.round(c.snap(c.popupMenuHandler.triggerX/f-l)),k=Math.round(c.snap(c.popupMenuHandler.triggerY/f-n));c.cellsMoved(b,p-d.x,k-d.y)}}}finally{c.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=c.getSelectionCell();c.isEnabled()&&null!=a&&c.getModel().isVertex(a)&&
+a;e++)a=a&&c.model.isEdge(b[e]);var d=c.view.translate,f=c.view.scale,l=d.x,p=d.y,d=null;if(1==b.length&&a){var g=c.getCellGeometry(b[0]);null!=g&&(d=g.getTerminalPoint(!0))}d=null!=d?d:c.getBoundingBoxFromGeometry(b,a);if(null!=d){var n=Math.round(c.snap(c.popupMenuHandler.triggerX/f-l)),k=Math.round(c.snap(c.popupMenuHandler.triggerY/f-p));c.cellsMoved(b,n-d.x,k-d.y)}}}finally{c.getModel().endUpdate()}}});this.addAction("copySize",function(a){a=c.getSelectionCell();c.isEnabled()&&null!=a&&c.getModel().isVertex(a)&&
 (a=c.getCellGeometry(a),null!=a&&(b.copiedSize=new mxRectangle(a.x,a.y,a.width,a.height)))},null,null,"Alt+Shit+X");this.addAction("pasteSize",function(a){if(c.isEnabled()&&!c.isSelectionEmpty()&&null!=b.copiedSize){c.getModel().beginUpdate();try{var e=c.getSelectionCells();for(a=0;a<e.length;a++)if(c.getModel().isVertex(e[a])){var k=c.getCellGeometry(e[a]);null!=k&&(k=k.clone(),k.width=b.copiedSize.width,k.height=b.copiedSize.height,c.getModel().setGeometry(e[a],k))}}finally{c.getModel().endUpdate()}}},
 null,null,"Alt+Shit+V");this.addAction("delete",function(b){a(null!=b&&mxEvent.isShiftDown(b))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)},null,null,Editor.ctrlKey+"+Delete");this.addAction("duplicate",function(){c.setSelectionCells(c.duplicateCells())},null,null,Editor.ctrlKey+"+D");this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(){c.turnShapes(c.getSelectionCells())},null,null,Editor.ctrlKey+"+R"));this.addAction("selectVertices",
 function(){c.selectVertices()},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){c.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){c.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){c.clearSelection()},null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!c.isSelectionEmpty()){c.getModel().beginUpdate();try{var a=c.isCellMovable(c.getSelectionCell())?1:0;c.toggleCellStyles(mxConstants.STYLE_MOVABLE,
@@ -2638,7 +2641,7 @@ b.showDataDialog(a)},null,null,Editor.ctrlKey+"+M");this.addAction("editTooltip.
 null!=a&&c.openLink(a)});this.addAction("editLink...",function(){var a=b.editor.graph;if(a.isEnabled()&&!a.isSelectionEmpty()){var c=a.getSelectionCell(),e=a.getLinkForCell(c)||"";b.showLinkDialog(e,mxResources.get("apply"),function(d){d=mxUtils.trim(d);a.setLinkForCell(c,0<d.length?d:null)})}},null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&(c.clearSelection(),b.actions.get("image").funct())})).isEnabled=
 k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())&&b.showLinkDialog("",mxResources.get("insert"),function(a,b){a=mxUtils.trim(a);if(0<a.length){var e=null,d=c.getLinkTitle(a);null!=b&&0<b.length&&(e=b[0].iconUrl,d=b[0].name||b[0].type,d=d.charAt(0).toUpperCase()+d.substring(1),30<d.length&&(d=d.substring(0,30)+"..."));var f=c.getFreeInsertPoint(),e=new mxCell(d,new mxGeometry(f.x,f.y,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+
 (null!=e?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+e:"spacing=10;"));e.vertex=!0;c.setLinkForCell(e,a);c.cellSizeUpdated(e,!0);c.getModel().beginUpdate();try{e=c.addCell(e),c.fireEvent(new mxEventObject("cellsInserted","cells",[e]))}finally{c.getModel().endUpdate()}c.setSelectionCell(e);c.scrollCellToVisible(c.getSelectionCell())}})})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){var a=b.editor.graph;if(a.isEnabled())if(a.cellEditor.isContentEditing()){var c=
-a.getSelectedElement(),e=a.getParentByName(c,"A",a.cellEditor.textarea),d="";if(null==e&&null!=c&&null!=c.getElementsByTagName)for(var f=c.getElementsByTagName("a"),l=0;l<f.length&&null==e;l++)f[l].textContent==c.textContent&&(e=f[l]);null!=e&&"A"==e.nodeName&&(d=e.getAttribute("href")||"",a.selectNode(e));var n=a.cellEditor.saveSelection();b.showLinkDialog(d,mxResources.get("apply"),mxUtils.bind(this,function(d){a.cellEditor.restoreSelection(n);null!=d&&a.insertLink(d)}))}else a.isSelectionEmpty()?
+a.getSelectedElement(),e=a.getParentByName(c,"A",a.cellEditor.textarea),d="";if(null==e&&null!=c&&null!=c.getElementsByTagName)for(var f=c.getElementsByTagName("a"),l=0;l<f.length&&null==e;l++)f[l].textContent==c.textContent&&(e=f[l]);null!=e&&"A"==e.nodeName&&(d=e.getAttribute("href")||"",a.selectNode(e));var p=a.cellEditor.saveSelection();b.showLinkDialog(d,mxResources.get("apply"),mxUtils.bind(this,function(d){a.cellEditor.restoreSelection(p);null!=d&&a.insertLink(d)}))}else a.isSelectionEmpty()?
 this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var a=c.getSelectionCells();if(null!=a){c.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var e=a[b];if(c.getModel().getChildCount(e))c.updateGroupBounds([e],20);else{var d=c.view.getState(e),f=c.getCellGeometry(e);c.getModel().isVertex(e)&&null!=d&&null!=d.text&&null!=f&&c.isWrapping(e)?(f=f.clone(),f.height=d.text.boundingBox.height/c.view.scale,c.getModel().setGeometry(e,f)):
 c.updateCellSize(e)}}}finally{c.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("formattedText",function(){var a=c.getView().getState(c.getSelectionCell());if(null!=a){var e="1";c.stopEditing();c.getModel().beginUpdate();try{if("1"==a.style.html){var e=null,k=c.convertValueToString(a.cell);"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var d=document.createElement("div");d.innerHTML=k;k=mxUtils.extractTextWithWhitespace(d.childNodes);
 c.cellLabelChanged(a.cell,k)}else k=mxUtils.htmlEntities(c.convertValueToString(a.cell),!1),"0"!=mxUtils.getValue(a.style,"nl2Br","1")&&(k=k.replace(/\n/g,"<br/>")),c.cellLabelChanged(a.cell,c.sanitizeHtml(k));c.setCellStyles("html",e);b.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=e?e:"0"],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}}});this.addAction("wordWrap",function(){var a=c.getView().getState(c.getSelectionCell()),b="wrap";c.stopEditing();
@@ -2667,9 +2670,9 @@ function(b){null!=b&&c.setCellStyle(mxUtils.trim(b),a)},null,null,400,220);this.
 if(null!=a&&c.getModel().isEdge(a)){var b=e.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var k=c.view.translate,d=c.view.scale,f=k.x,k=k.y,a=c.getModel().getParent(a),l=c.getCellGeometry(a);c.getModel().isVertex(a)&&null!=l;)f+=l.x,k+=l.y,a=c.getModel().getParent(a),l=c.getCellGeometry(a);f=Math.round(c.snap(c.popupMenuHandler.triggerX/d-f));d=Math.round(c.snap(c.popupMenuHandler.triggerY/d-k));b.addPointAt(b.state,f,d)}}});this.addAction("removeWaypoint",function(){var a=
 b.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(){var a=c.getSelectionCells();if(null!=a){a=c.addAllEdges(a);c.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var e=a[b];if(c.getModel().isEdge(e)){var d=c.getCellGeometry(e);null!=d&&(d=d.clone(),d.points=null,c.getModel().setGeometry(e,d))}}}finally{c.getModel().endUpdate()}}},null,null,"Alt+Shift+C");m=this.addAction("subscript",mxUtils.bind(this,
 function(){c.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");m=this.addAction("superscript",mxUtils.bind(this,function(){c.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(c.isEnabled()&&!c.isCellLocked(c.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",e=c.getView().getState(c.getSelectionCell()),k="";null!=
-e&&(k=e.style[mxConstants.STYLE_IMAGE]||k);var d=c.cellEditor.saveSelection();b.showImageDialog(a,k,function(a,b,e){if(c.cellEditor.isContentEditing())c.cellEditor.restoreSelection(d),c.insertImage(a,b,e);else{var f=c.getSelectionCells();if(null!=a&&(0<a.length||0<f.length)){var l=null;c.getModel().beginUpdate();try{if(0==f.length){var n=c.getFreeInsertPoint(),l=f=[c.insertVertex(c.getDefaultParent(),null,"",n.x,n.y,b,e,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
-c.fireEvent(new mxEventObject("cellsInserted","cells",l))}c.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,f);var k=c.view.getState(f[0]),t=null!=k?k.style:c.getCellStyle(f[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?c.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==a.length&&c.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==c.getSelectionCount()&&null!=b&&null!=e){var y=f[0],u=c.getModel().getGeometry(y);null!=u&&(u=u.clone(),u.width=b,u.height=e,
-c.getModel().setGeometry(y,u))}}finally{c.getModel().endUpdate()}null!=l&&(c.setSelectionCells(l),c.scrollCellToVisible(l[0]))}}},c.cellEditor.isContentEditing(),!c.cellEditor.isContentEditing())}}).isEnabled=k;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide",
+e&&(k=e.style[mxConstants.STYLE_IMAGE]||k);var d=c.cellEditor.saveSelection();b.showImageDialog(a,k,function(a,b,e){if(c.cellEditor.isContentEditing())c.cellEditor.restoreSelection(d),c.insertImage(a,b,e);else{var f=c.getSelectionCells();if(null!=a&&(0<a.length||0<f.length)){var l=null;c.getModel().beginUpdate();try{if(0==f.length){var p=c.getFreeInsertPoint(),l=f=[c.insertVertex(c.getDefaultParent(),null,"",p.x,p.y,b,e,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
+c.fireEvent(new mxEventObject("cellsInserted","cells",l))}c.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,f);var k=c.view.getState(f[0]),t=null!=k?k.style:c.getCellStyle(f[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?c.setCellStyles(mxConstants.STYLE_SHAPE,"image",f):0==a.length&&c.setCellStyles(mxConstants.STYLE_SHAPE,null,f);if(1==c.getSelectionCount()&&null!=b&&null!=e){var x=f[0],u=c.getModel().getGeometry(x);null!=u&&(u=u.clone(),u.width=b,u.height=e,
+c.getModel().setGeometry(x,u))}}finally{c.getModel().endUpdate()}null!=l&&(c.setSelectionCells(l),c.scrollCellToVisible(l[0]))}}},c.cellEditor.isContentEditing(),!c.cellEditor.isContentEditing())}}).isEnabled=k;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide",
 function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("layers"))):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));m=this.addAction("formatPanel",mxUtils.bind(this,function(){b.toggleFormatPanel()}),null,null,Editor.ctrlKey+
 "+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return 0<b.formatWidth}));m=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(b,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),
 b.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))};
@@ -2679,12 +2682,13 @@ DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E
 DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};DrawioFile.prototype.synchronizeFile=function(a,b){this.savingFile?null!=b&&b({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,b):this.updateFile(a,b)};
 DrawioFile.prototype.updateFile=function(a,b,e,c){null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():this.getLatestVersion(mxUtils.bind(this,function(k){try{null!=e&&e()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():null!=k?this.mergeFile(k,a,b,c):this.reloadFile(a,b))}catch(m){null!=b&&b(m)}}),b))};
 DrawioFile.prototype.mergeFile=function(a,b,e,c){var k=!0;try{this.stats.fileMerged++;var m=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),q=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=q&&0<q.length){this.shadowPages=q;this.backupPatch=this.isModified()?this.ui.diffPages(m,this.ui.pages):null;var r=[this.ui.diffPages(null!=c?c:m,this.shadowPages)];if(!this.ignorePatches(r)){var v=this.ui.patchPages(m,
-r[0]);c={};var z=this.ui.getHashValueForPages(v,c),m={},d=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",r,"checksum",d==z,z);if(null!=z&&z!=d){var f=this.compressReportData(this.getAnonymizedXmlForPages(q)),l=this.compressReportData(this.getAnonymizedXmlForPages(v)),n=this.ui.hashValue(a.getCurrentEtag()),g=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,r,"Shadow Details: "+JSON.stringify(c)+
-"\nChecksum: "+z+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+n+"\nTo: "+g+"\n\nFile Data:\n"+f+"\nPatched Shadow:\n"+l,null,"mergeFile");return}this.patch(r,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(p){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
-null!=e&&e(p);try{this.errorReportsEnabled&&k&&this.sendErrorReport("Error in mergeFile",null,p)}catch(B){}}};DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),e=b.document.createElement("mxfile");if(null!=a)for(var c=0;c<a.length;c++){var k=b.encode(new mxGraphModel(a[c].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[c].getId());a[c].viewState&&this.ui.editor.graph.saveViewState(a[c].viewState,k,!0);e.appendChild(k)}return mxUtils.getPrettyXml(e)};
+r[0]);c={};var z=this.ui.getHashValueForPages(v,c),m={},d=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",r,"checksum",d==z,z);if(null!=z&&z!=d){var f=this.compressReportData(this.getAnonymizedXmlForPages(q)),l=this.compressReportData(this.getAnonymizedXmlForPages(v)),p=this.ui.hashValue(a.getCurrentEtag()),g=this.ui.hashValue(this.getCurrentEtag());this.checksumError(e,r,"Shadow Details: "+JSON.stringify(c)+
+"\nChecksum: "+z+"\nCurrent: "+d+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+p+"\nTo: "+g+"\n\nFile Data:\n"+f+"\nPatched Shadow:\n"+l,null,"mergeFile");return}this.patch(r,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw k=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(y){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+null!=e&&e(y);try{if(k)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,y);else{var n=this.getCurrentUser(),A=null!=n?n.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),A,y)}}catch(t){}}};
+DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),e=b.document.createElement("mxfile");if(null!=a)for(var c=0;c<a.length;c++){var k=b.encode(new mxGraphModel(a[c].root));"1"!=urlParams.dev&&(k=this.ui.anonymizeNode(k,!0));k.setAttribute("id",a[c].getId());a[c].viewState&&this.ui.editor.graph.saveViewState(a[c].viewState,k,!0);e.appendChild(k)}return mxUtils.getPrettyXml(e)};
 DrawioFile.prototype.compressReportData=function(a,b,e){b=null!=b?b:1E4;null!=e&&null!=a&&a.length>e?a=a.substring(0,e)+"[...]":null!=a&&a.length>b&&(a=this.ui.editor.graph.compress(a)+"\n");return a};
 DrawioFile.prototype.checksumError=function(a,b,e,c,k){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var m=mxUtils.bind(this,function(a){var c=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)),
-25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=e?e:"")+"\n\nPatches:\n"+c+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==c?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==c?m(a):m(null)}),function(){})}}catch(q){}};
+25E3):"n/a";this.sendErrorReport("Checksum Error in "+k,(null!=e?e:"")+"\n\nPatches:\n"+c+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==c?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==c?m(a):m(null)}),function(){})}else{var q=this.getCurrentUser(),r=null!=q?q.id:"unknown";EditorUi.logError("Checksum Error in "+k,null,this.getMode()+"."+this.getId(),r)}}catch(v){}};
 DrawioFile.prototype.sendErrorReport=function(a,b,e,c){try{var k=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),m=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),q=this.getCurrentUser(),r=null!=q?this.ui.hashValue(q.id):"unknown",v=null!=this.sync?this.sync.clientId:"no sync",z=this.getTitle(),d=z.lastIndexOf("."),q="xml";0<d&&(q=z.substring(d));var f=null!=e?e.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+":\n\nBrowser="+
 navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+q+")\nUser="+r+" ("+v+")\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=b?"\n\n"+b:"")+(null!=e?"\n\nError: "+
 e.message:"")+"\n\nStack:\n"+f+"\n\nShadow:\n"+k+"\n\nData:\n"+m,c)}catch(l){}};
@@ -2722,7 +2726,8 @@ DrawioFile.prototype.handleConflictError=function(a,b){var e=mxUtils.bind(this,f
 function(){this.ui.spinner.stop();this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.save(!0,e,c,null,null,this.constructor==GitHubFile&&null!=a?a.commitMessage:null)}),c)});"none"==DrawioFile.SYNC?this.showCopyDialog(e,c,k):this.invalidChecksum?this.showRefreshDialog(e,c,this.getErrorMessage(a)):b?this.showConflictDialog(k,m):this.addConflictStatus(mxUtils.bind(this,function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(e,
 c)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){return null!=a?null!=a.error?a.error.message:a.message:null};
 DrawioFile.prototype.fileChanged=function(){this.setModified(!0);this.isAutosave()?(this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get("saving"))+"..."),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){null==this.autosaveThread&&this.handleFileSuccess(!0)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus()};
-DrawioFile.prototype.fileSaved=function(a,b,e,c){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,e,c,a)}catch(k){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=c&&c(k);try{this.errorReportsEnabled&&this.sendErrorReport("Error in fileSaved",null,k)}catch(m){}}};
+DrawioFile.prototype.fileSaved=function(a,b,e,c){try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=e&&e()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),b,e,c,a)}catch(q){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=c&&c(q);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,q);else{var k=this.getCurrentUser(),m=null!=k?k.id:
+"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),m,q)}}catch(r){}}};
 DrawioFile.prototype.autosave=function(a,b,e,c){null==this.lastAutosave&&(this.lastAutosave=(new Date).getTime());a=(new Date).getTime()-this.lastAutosave<b?a:0;this.clearAutosave();var k=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==k&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();
 null!=e&&e(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=e&&e(null)}),a);this.autosaveThread=k};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
 DrawioFile.prototype.isAutosaveRevision=function(){var a=(new Date).getTime();return null==this.lastAutosaveRevision||a-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))};
@@ -2763,7 +2768,7 @@ d.getElementsByTagName("parsererror");if(null!=b&&0<b.length){var b=b[0],c=b.get
 else if(c=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=c){var f=new mxCodec(c.ownerDocument);f.decode(c,this.graph.getStylesheet())}this.graph.currentStyle=b;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");b=d.getAttribute("backgroundImage");null!=b?(b=JSON.parse(b),this.graph.setBackgroundImage(new mxImage(b.src,b.width,b.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&
 !this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var b=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var d=b.apply(this,
 arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&d.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&d.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));d.setAttribute("math",this.graph.mathEnabled?"1":"0");d.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return d};Editor.prototype.isDataSvg=function(a){try{var d=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!=
-d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var b=mxUtils.parseXml(d).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(D){}return!1};Editor.prototype.extractGraphModel=function(a,d){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),c=[];if(null!=b&&0<b.length)for(var f=0;f<b.length;f++)if("mxgraph"==b[f].getAttribute("class")){c.push(b[f]);
+d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var b=mxUtils.parseXml(d).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(B){}return!1};Editor.prototype.extractGraphModel=function(a,d){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),c=[];if(null!=b&&0<b.length)for(var f=0;f<b.length;f++)if("mxgraph"==b[f].getAttribute("class")){c.push(b[f]);
 break}0<c.length&&(b=c[0].getAttribute("data-mxgraph"),null!=b?(c=JSON.parse(b),null!=c&&null!=c.xml&&(c=mxUtils.parseXml(c.xml),a=c.documentElement)):(c=c[0].getElementsByTagName("div"),0<c.length&&(b=mxUtils.getTextContent(c[0]),b=this.graph.decompress(b),0<b.length&&(c=mxUtils.parseXml(b),a=c.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(b=a.getAttribute("content"),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)a=mxUtils.parseXml(b).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||d||(c=null,"diagram"==a.nodeName?c=a:"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),0<b.length&&(c=b[Math.max(0,Math.min(b.length-1,urlParams.page||0))])),null!=c&&(b=this.graph.decompress(mxUtils.getTextContent(c)),null!=b&&0<b.length&&(a=mxUtils.parseXml(b).documentElement)));null==a||"mxGraphModel"==a.nodeName||d&&"mxfile"==a.nodeName||
 (a=null);return a};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};var c=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=
@@ -2807,16 +2812,16 @@ b.size&&(g=g.slice(0,b.size));d=g.join(",");null!=b.countProperty&&(k.setCellSty
 f.push(b.dependentProps[a]);e.push(p)}u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",f,"values",e,"cells",k.getSelectionCells()))}finally{k.getModel().endUpdate()}}function f(d,b,c){var f=mxUtils.getOffset(a,!0),e=mxUtils.getOffset(d,!0);b.style.position="absolute";b.style.left=e.x-f.x+"px";b.style.top=e.y-f.y+"px";b.style.width=d.offsetWidth+"px";b.style.height=d.offsetHeight-(c?4:0)+"px";b.style.zIndex=5}function e(a,d,b){var f=document.createElement("div");f.style.width="32px";f.style.height=
 "4px";f.style.margin="2px";f.style.border="1px solid black";f.style.background=d&&"none"!=d?d:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(u,function(e){this.editorUi.pickColor(d,function(d){f.style.background="none"==d?"url('"+Dialog.prototype.noColorImage+"')":d;c(a,d,b)});mxEvent.consume(e)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(f);return btn}function g(a,d,b,f,e,g,l){null!=d&&(d=d.split(","),t.push({name:a,
 values:d,type:b,defVal:f,countProperty:e,parentRow:g,isDeletable:!0,flipBkg:l}));btn=mxUtils.button("+",mxUtils.bind(u,function(d){for(var n=g,u=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==a)n=n.nextSibling,u++;else break;var k={type:b,parentRow:g,index:u,isDeletable:!0,defVal:f,countProperty:e},u=p(a,"",k,0==u%2,l);c(a,f,k);n.parentNode.insertBefore(u,n.nextSibling);mxEvent.consume(d)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}
-function l(a,d,b,c,f,e,g){if(0<f){var l=Array(f);d=null!=d?d.split(","):[];for(var n=0;n<f;n++)l[n]=null!=d[n]?d[n]:null!=c?c:"";t.push({name:a,values:l,type:b,defVal:c,parentRow:e,flipBkg:g,size:f})}return document.createElement("div")}function n(a,d,b){var f=document.createElement("input");f.type="checkbox";f.checked="1"==d;mxEvent.addListener(f,"change",function(){c(a,f.checked?"1":"0",b)});return f}function p(d,b,p,k,t){var y=p.dispName,B=p.type,x=document.createElement("tr");x.className="gePropRow"+
-(t?"Dark":"")+(k?"Alt":"")+" gePropNonHeaderRow";x.setAttribute("data-pName",d);x.setAttribute("data-pValue",b);k=!1;null!=p.index&&(x.setAttribute("data-index",p.index),y=(null!=y?y:"")+"["+p.index+"]",k=!0);var A=document.createElement("td");A.className="gePropRowCell";A.innerHTML=mxUtils.htmlEntities(mxResources.get(y,null,y));k&&(A.style.textAlign="right");x.appendChild(A);A=document.createElement("td");A.className="gePropRowCell";if("color"==B)A.appendChild(e(d,b,p));else if("bool"==B||"boolean"==
-B)A.appendChild(n(d,b,p));else if("enum"==B){var m=p.enumList;for(t=0;t<m.length;t++)if(y=m[t],y.val==b){A.innerHTML=mxUtils.htmlEntities(mxResources.get(y.dispName,null,y.dispName));break}mxEvent.addListener(A,"click",mxUtils.bind(u,function(){var e=document.createElement("select");f(A,e);for(var g=0;g<m.length;g++){var l=m[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(l.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));e.appendChild(n)}e.value=
-b;a.appendChild(e);mxEvent.addListener(e,"change",function(){var a=mxUtils.htmlEntities(e.value);c(d,a,p)});e.focus();mxEvent.addListener(e,"blur",function(){a.removeChild(e)})}))}else"dynamicArr"==B?A.appendChild(g(d,b,p.subType,p.subDefVal,p.countProperty,x,t)):"staticArr"==B?A.appendChild(l(d,b,p.subType,p.subDefVal,p.size,x,t)):(A.innerHTML=b,mxEvent.addListener(A,"click",mxUtils.bind(u,function(){function e(){var a=g.value,a=0==a.length&&"string"!=B?0:a;p.allowAuto&&("auto"==a.trim().toLowerCase()?
-(a="auto",B="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==B?parseInt(a):a)+"");c(d,a,p)}var g=document.createElement("input");f(A,g,!0);g.value=b;g.className="gePropEditor";"int"!=B&&"float"!=B||p.allowAuto||(g.type="number",g.step="int"==B?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&e()});
-g.focus();mxEvent.addListener(g,"blur",function(){e()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(u,function(a){c(d,"",p,p.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",A.appendChild(t));x.appendChild(A);return x}var u=this,k=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var y=document.createElement("table");y.style.whiteSpace="nowrap";y.style.width="100%";var B=document.createElement("tr");
-B.className="gePropHeader";var x=document.createElement("th");x.className="gePropHeaderCell";var A=document.createElement("img");A.src=Sidebar.prototype.expandedImage;x.appendChild(A);mxUtils.write(x,mxResources.get("property"));B.style.cursor="pointer";var m=function(){var d=y.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){A.src=Sidebar.prototype.collapsedImage;b="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var f=a.childNodes[c],e=f.nodeName.toUpperCase();"INPUT"!=
-e&&"SELECT"!=e||a.removeChild(f)}catch(ha){}}else A.src=Sidebar.prototype.expandedImage,b="";for(c=0;c<d.length;c++)d[c].style.display=b};mxEvent.addListener(B,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;m()});B.appendChild(x);x=document.createElement("th");x.className="gePropHeaderCell";x.innerHTML=mxResources.get("value");B.appendChild(x);y.appendChild(B);var q=!1,r=!1,v;for(v in d)if(B=d[v],"function"!=typeof B.isVisible||B.isVisible(b)){var z=null!=b.style[v]?
-mxUtils.htmlEntities(b.style[v]+""):B.defVal;if("separator"==B.type)r=!r;else{if("staticArr"==B.type)B.size=parseInt(b.style[B.sizeProperty]||d[B.sizeProperty].defVal)||0;else if(null!=B.dependentProps){for(var I=B.dependentProps,aa=[],L=[],x=0;x<I.length;x++){var P=b.style[I[x]];L.push(d[I[x]].subDefVal);aa.push(null!=P?P.split(","):[])}B.dependentPropsDefVal=L;B.dependentPropsVals=aa}y.appendChild(p(v,z,B,q,r));q=!q}}for(x=0;x<t.length;x++)for(B=t[x],d=B.parentRow,b=0;b<B.values.length;b++)v=p(B.name,
-B.values[b],{type:B.type,parentRow:B.parentRow,isDeletable:B.isDeletable,index:b,defVal:B.defVal,countProperty:B.countProperty,size:B.size},0==b%2,B.flipBkg),d.parentNode.insertBefore(v,d.nextSibling),d=v;a.appendChild(y);m();return a};StyleFormatPanel.prototype.addStyles=function(a){function d(a){function d(a){var d=mxUtils.button("",function(d){c.getModel().beginUpdate();try{var b=c.getSelectionCells();for(d=0;d<b.length;d++){for(var f=c.getModel().getStyle(b[d]),g=0;g<e.length;g++)f=mxUtils.removeStylename(f,
+function l(a,d,b,c,f,e,g){if(0<f){var l=Array(f);d=null!=d?d.split(","):[];for(var n=0;n<f;n++)l[n]=null!=d[n]?d[n]:null!=c?c:"";t.push({name:a,values:l,type:b,defVal:c,parentRow:e,flipBkg:g,size:f})}return document.createElement("div")}function n(a,d,b){var f=document.createElement("input");f.type="checkbox";f.checked="1"==d;mxEvent.addListener(f,"change",function(){c(a,f.checked?"1":"0",b)});return f}function p(d,b,p,k,t){var x=p.dispName,A=p.type,y=document.createElement("tr");y.className="gePropRow"+
+(t?"Dark":"")+(k?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",d);y.setAttribute("data-pValue",b);k=!1;null!=p.index&&(y.setAttribute("data-index",p.index),x=(null!=x?x:"")+"["+p.index+"]",k=!0);var m=document.createElement("td");m.className="gePropRowCell";m.innerHTML=mxUtils.htmlEntities(mxResources.get(x,null,x));k&&(m.style.textAlign="right");y.appendChild(m);m=document.createElement("td");m.className="gePropRowCell";if("color"==A)m.appendChild(e(d,b,p));else if("bool"==A||"boolean"==
+A)m.appendChild(n(d,b,p));else if("enum"==A){var D=p.enumList;for(t=0;t<D.length;t++)if(x=D[t],x.val==b){m.innerHTML=mxUtils.htmlEntities(mxResources.get(x.dispName,null,x.dispName));break}mxEvent.addListener(m,"click",mxUtils.bind(u,function(){var e=document.createElement("select");f(m,e);for(var g=0;g<D.length;g++){var l=D[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(l.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(l.dispName,null,l.dispName));e.appendChild(n)}e.value=
+b;a.appendChild(e);mxEvent.addListener(e,"change",function(){var a=mxUtils.htmlEntities(e.value);c(d,a,p)});e.focus();mxEvent.addListener(e,"blur",function(){a.removeChild(e)})}))}else"dynamicArr"==A?m.appendChild(g(d,b,p.subType,p.subDefVal,p.countProperty,y,t)):"staticArr"==A?m.appendChild(l(d,b,p.subType,p.subDefVal,p.size,y,t)):(m.innerHTML=b,mxEvent.addListener(m,"click",mxUtils.bind(u,function(){function e(){var a=g.value,a=0==a.length&&"string"!=A?0:a;p.allowAuto&&("auto"==a.trim().toLowerCase()?
+(a="auto",A="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==A?parseInt(a):a)+"");c(d,a,p)}var g=document.createElement("input");f(m,g,!0);g.value=b;g.className="gePropEditor";"int"!=A&&"float"!=A||p.allowAuto||(g.type="number",g.step="int"==A?"1":"any",null!=p.min&&(g.min=parseFloat(p.min)),null!=p.max&&(g.max=parseFloat(p.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&e()});
+g.focus();mxEvent.addListener(g,"blur",function(){e()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(u,function(a){c(d,"",p,p.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",m.appendChild(t));y.appendChild(m);return y}var u=this,k=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var x=document.createElement("table");x.style.whiteSpace="nowrap";x.style.width="100%";var A=document.createElement("tr");
+A.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var m=document.createElement("img");m.src=Sidebar.prototype.expandedImage;y.appendChild(m);mxUtils.write(y,mxResources.get("property"));A.style.cursor="pointer";var D=function(){var d=x.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){m.src=Sidebar.prototype.collapsedImage;b="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var f=a.childNodes[c],e=f.nodeName.toUpperCase();"INPUT"!=
+e&&"SELECT"!=e||a.removeChild(f)}catch(ha){}}else m.src=Sidebar.prototype.expandedImage,b="";for(c=0;c<d.length;c++)d[c].style.display=b};mxEvent.addListener(A,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;D()});A.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");A.appendChild(y);x.appendChild(A);var q=!1,r=!1,v;for(v in d)if(A=d[v],"function"!=typeof A.isVisible||A.isVisible(b)){var z=null!=b.style[v]?
+mxUtils.htmlEntities(b.style[v]+""):A.defVal;if("separator"==A.type)r=!r;else{if("staticArr"==A.type)A.size=parseInt(b.style[A.sizeProperty]||d[A.sizeProperty].defVal)||0;else if(null!=A.dependentProps){for(var I=A.dependentProps,aa=[],L=[],y=0;y<I.length;y++){var P=b.style[I[y]];L.push(d[I[y]].subDefVal);aa.push(null!=P?P.split(","):[])}A.dependentPropsDefVal=L;A.dependentPropsVals=aa}x.appendChild(p(v,z,A,q,r));q=!q}}for(y=0;y<t.length;y++)for(A=t[y],d=A.parentRow,b=0;b<A.values.length;b++)v=p(A.name,
+A.values[b],{type:A.type,parentRow:A.parentRow,isDeletable:A.isDeletable,index:b,defVal:A.defVal,countProperty:A.countProperty,size:A.size},0==b%2,A.flipBkg),d.parentNode.insertBefore(v,d.nextSibling),d=v;a.appendChild(x);D();return a};StyleFormatPanel.prototype.addStyles=function(a){function d(a){function d(a){var d=mxUtils.button("",function(d){c.getModel().beginUpdate();try{var b=c.getSelectionCells();for(d=0;d<b.length;d++){for(var f=c.getModel().getStyle(b[d]),g=0;g<e.length;g++)f=mxUtils.removeStylename(f,
 e[g]);var l=c.getModel().isVertex(b[d])?c.defaultVertexStyle:c.defaultEdgeStyle;null!=a?(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,null)),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,null)),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(b[d])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,
 a.font||mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,null)))):(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FILLCOLOR,"#ffffff")),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(l,mxConstants.STYLE_STROKECOLOR,"#000000")),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(b[d])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(l,mxConstants.STYLE_FONTCOLOR,
 null))));c.getModel().setStyle(b[d],f)}}finally{c.getModel().endUpdate()}});d.className="geStyleButton";d.style.width="36px";d.style.height="30px";d.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?d.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":d.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?
@@ -2832,10 +2837,10 @@ function(a){this.editorUi.actions.get("editShape").funct()})),d.setAttribute("ti
 this.getInsertPoint=function(){return null!=d?this.getPointForEvent(d):b.apply(this,arguments)};var c=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var d=this.graph.view.getState(a),d=null!=d?d.style:this.graph.getCellStyle(a);if(null!=d){if("undefined"!=typeof mxRackContainer&&"rack"==d.childLayout){var b=new mxStackLayout(this.graph,!1);b.setChildGeometry=function(a,d){d.height=Math.max(d.height,20);if(1<d.height/20){var b=d.height%20;d.height+=10<b?20-b:-b}this.graph.getModel().setGeometry(a,
 d)};b.fill=!0;b.unitSize=mxRackContainer.unitSize|20;b.marginLeft=d.marginLeft||0;b.marginRight=d.marginRight||0;b.marginTop=d.marginTop||0;b.marginBottom=d.marginBottom||0;b.resizeParent=!1;return b}if("undefined"!=typeof mxTableLayout&&"tableLayout"==d.childLayout)return b=new mxTableLayout(this.graph),b.rows=d.tableRows||2,b.columns=d.tableColumns||2,b.colPercentages=d.colPercentages,b.rowPercentages=d.rowPercentages,b.equalColumns="1"==mxUtils.getValue(d,"equalColumns",b.colPercentages?"0":"1"),
 b.equalRows="1"==mxUtils.getValue(d,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(d,"resizeParent","1"),b.border=d.tableBorder||b.border,b.marginLeft=d.marginLeft||0,b.marginRight=d.marginRight||0,b.marginTop=d.marginTop||0,b.marginBottom=d.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(d,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(d,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=d.colWidths||"100",b.rowHeights=d.rowHeights||"50",b}return c.apply(this,arguments)}};
-var n=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return n.apply(this,arguments)&&!mxClient.IS_SF};var g=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var d=g.apply(this,arguments);if(null==d){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(A){null!=window.console&&console.log("Error in vars URL parameter: "+A)}null!=this.globalUrlVars&&(d=
-this.globalUrlVars[a])}return d};var p=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){p.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=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;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var B=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=
-function(){B.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var d=0;d<a.actions.length;d++)if(null!=a.actions[d].open)if(this.isCustomLink(a.actions[d].open)){if(!this.customLinkClicked(a.actions[d].open))return}else this.openLink(a.actions[d].open);this.model.beginUpdate();try{for(d=0;d<a.actions.length;d++)this.handleLinkAction(a.actions[d])}finally{this.model.endUpdate()}}};
+var p=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return p.apply(this,arguments)&&!mxClient.IS_SF};var g=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var d=g.apply(this,arguments);if(null==d){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=JSON.parse(decodeURIComponent(urlParams.vars))}catch(D){null!=window.console&&console.log("Error in vars URL parameter: "+D)}null!=this.globalUrlVars&&(d=
+this.globalUrlVars[a])}return d};var n=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){n.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=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;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var A=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=
+function(){A.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var d=0;d<a.actions.length;d++)if(null!=a.actions[d].open)if(this.isCustomLink(a.actions[d].open)){if(!this.customLinkClicked(a.actions[d].open))return}else this.openLink(a.actions[d].open);this.model.beginUpdate();try{for(d=0;d<a.actions.length;d++)this.handleLinkAction(a.actions[d])}finally{this.model.endUpdate()}}};
 Graph.prototype.handleLinkAction=function(a){var d=[];null!=a.select&&this.isEnabled()&&(d=this.getCellsForAction(a.select),this.setSelectionCells(d));null!=a.highlight&&(d=this.getCellsForAction(a.highlight),this.highlightCells(d,a.highlight.color,a.highlight.duration,a.highlight.opacity));null!=a.toggle&&this.toggleCells(this.getCellsForAction(a.toggle));null!=a.show&&this.setCellsVisible(this.getCellsForAction(a.show),!0);null!=a.hide&&this.setCellsVisible(this.getCellsForAction(a.hide),!1);null!=
 a.scroll&&(d=this.getCellsForAction(a.scroll));0<d.length&&this.scrollCellToVisible(d[0])};Graph.prototype.getCellsForAction=function(a){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags))};Graph.prototype.getCellsById=function(a){var d=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var c=this.getDefaultParent(),d=d.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var f=this.model.getCell(a[b]);null!=f&&d.push(f)}return d};Graph.prototype.getCellsForTags=
 function(a,d,b){var c=[];if(null!=a){d=null!=d?d:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var e=null!=d[f].value&&"object"==typeof d[f].value?mxUtils.trim(d[f].value.getAttribute(b)||""):"",g=!0;if(0<e.length)for(var e=e.toLowerCase().split(" "),l=0;l<a.length&&g;l++)var n=mxUtils.trim(a[l]).toLowerCase(),g=g&&(0==n.length||0<=mxUtils.indexOf(e,n));else g=0==a.length;g&&c.push(d[f])}}return c};
@@ -2854,61 +2859,61 @@ mxStencilRegistry.libraries.basic=[SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/basi
 [SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.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.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.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.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(a){var d=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?d="mxgraph.er":"sysML"==a.substring(0,5)&&(d="mxgraph.sysml"));return d};var x=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,e,g,l,n,p){if(null!=b&&null==mxMarker.markers[b]){var k=this.getPackageForType(b);null!=k&&mxStencilRegistry.getStencil(k)}return x.apply(this,arguments)};PrintDialog.prototype.create=function(a,d){function b(){B.value=Math.max(1,Math.min(l,Math.max(parseInt(B.value),
-parseInt(u.value))));u.value=Math.max(1,Math.min(l,Math.min(parseInt(B.value),parseInt(u.value))))}function c(d){function b(d,b,f){var e=d.getGraphBounds(),g=0,l=0,n=ja.get(),p=1/d.pageScale,k=q.checked;if(k)var p=parseInt(Z.value),t=parseInt(G.value),p=Math.min(n.height*t/(e.height/d.view.scale),n.width*p/(e.width/d.view.scale));else p=parseInt(y.value)/(100*d.pageScale),isNaN(p)&&(c=1/d.pageScale,y.value="100 %");n=mxRectangle.fromRectangle(n);n.width=Math.ceil(n.width*c);n.height=Math.ceil(n.height*
-c);p*=c;!k&&d.pageVisible?(e=d.getPageLayout(),g-=e.x*n.width,l-=e.y*n.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,p,n,0,g,l,k);b.pageSelector=!1;b.mathEnabled=!1;d=a.getCurrentFile();null!=d&&(b.title=d.getTitle());var u=b.writeHead;b.writeHead=function(d){u.apply(this,arguments);null!=a.editor.fontCss&&(d.writeln('<style type="text/css">'),d.writeln(a.editor.fontCss),d.writeln("</style>"))};if("undefined"!==typeof MathJax){var B=b.renderPage;b.renderPage=function(a,d,b,c,f,e){var g=
-mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=B.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}b.open(null,null,f,!0)}else{n=d.background;if(null==n||""==n||n==mxConstants.NONE)n="#ffffff";b.backgroundColor=n;b.autoOrigin=k;b.appendGraph(d,p,g,l,f,!0)}return b}var c=parseInt(Q.value)/100;isNaN(c)&&(c=1,Q.value="100 %");var c=.75*
-c,e=u.value,g=B.value,l=!k.checked,p=null;l&&(l=e==n&&g==n);if(!l&&null!=a.pages&&a.pages.length){var t=0,l=a.pages.length-1;k.checked||(t=parseInt(e)-1,l=parseInt(g)-1);for(var x=t;x<=l;x++){var m=a.pages[x],e=m==a.currentPage?f:null;if(null==e){var e=a.createTemporaryGraph(f.getStylesheet()),g=!0,t=!1,A=null,D=null;null==m.viewState&&null==m.root&&a.updatePageRoot(m);null!=m.viewState&&(g=m.viewState.pageVisible,t=m.viewState.mathEnabled,A=m.viewState.background,D=m.viewState.backgroundImage);e.background=
-A;e.backgroundImage=null!=D?new mxImage(D.src,D.width,D.height):null;e.pageVisible=g;e.mathEnabled=t;var C=e.getGlobalVariable;e.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?x+1:C.apply(this,arguments)};document.body.appendChild(e.container);a.updatePageRoot(m);e.model.setRoot(m.root)}p=b(e,p,x!=l);e!=f&&e.container.parentNode.removeChild(e.container)}}else p=b(f);null==p?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(p.mathEnabled&&(l=p.wnd.document,
+mxMarker.getPackageForType=function(a){var d=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?d="mxgraph.er":"sysML"==a.substring(0,5)&&(d="mxgraph.sysml"));return d};var y=mxMarker.createMarker;mxMarker.createMarker=function(a,d,b,c,f,e,g,l,n,p){if(null!=b&&null==mxMarker.markers[b]){var k=this.getPackageForType(b);null!=k&&mxStencilRegistry.getStencil(k)}return y.apply(this,arguments)};PrintDialog.prototype.create=function(a,d){function b(){A.value=Math.max(1,Math.min(l,Math.max(parseInt(A.value),
+parseInt(u.value))));u.value=Math.max(1,Math.min(l,Math.min(parseInt(A.value),parseInt(u.value))))}function c(d){function b(d,b,f){var e=d.getGraphBounds(),g=0,l=0,n=ja.get(),p=1/d.pageScale,k=q.checked;if(k)var p=parseInt(Z.value),t=parseInt(G.value),p=Math.min(n.height*t/(e.height/d.view.scale),n.width*p/(e.width/d.view.scale));else p=parseInt(x.value)/(100*d.pageScale),isNaN(p)&&(c=1/d.pageScale,x.value="100 %");n=mxRectangle.fromRectangle(n);n.width=Math.ceil(n.width*c);n.height=Math.ceil(n.height*
+c);p*=c;!k&&d.pageVisible?(e=d.getPageLayout(),g-=e.x*n.width,l-=e.y*n.height):k=!0;if(null==b){b=PrintDialog.createPrintPreview(d,p,n,0,g,l,k);b.pageSelector=!1;b.mathEnabled=!1;d=a.getCurrentFile();null!=d&&(b.title=d.getTitle());var u=b.writeHead;b.writeHead=function(d){u.apply(this,arguments);null!=a.editor.fontCss&&(d.writeln('<style type="text/css">'),d.writeln(a.editor.fontCss),d.writeln("</style>"))};if("undefined"!==typeof MathJax){var A=b.renderPage;b.renderPage=function(a,d,b,c,f,e){var g=
+mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var l=A.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:l.className="geDisableMathJax";return l}}b.open(null,null,f,!0)}else{n=d.background;if(null==n||""==n||n==mxConstants.NONE)n="#ffffff";b.backgroundColor=n;b.autoOrigin=k;b.appendGraph(d,p,g,l,f,!0)}return b}var c=parseInt(Q.value)/100;isNaN(c)&&(c=1,Q.value="100 %");var c=.75*
+c,e=u.value,g=A.value,l=!k.checked,p=null;l&&(l=e==n&&g==n);if(!l&&null!=a.pages&&a.pages.length){var t=0,l=a.pages.length-1;k.checked||(t=parseInt(e)-1,l=parseInt(g)-1);for(var y=t;y<=l;y++){var m=a.pages[y],e=m==a.currentPage?f:null;if(null==e){var e=a.createTemporaryGraph(f.getStylesheet()),g=!0,t=!1,D=null,B=null;null==m.viewState&&null==m.root&&a.updatePageRoot(m);null!=m.viewState&&(g=m.viewState.pageVisible,t=m.viewState.mathEnabled,D=m.viewState.background,B=m.viewState.backgroundImage);e.background=
+D;e.backgroundImage=null!=B?new mxImage(B.src,B.width,B.height):null;e.pageVisible=g;e.mathEnabled=t;var C=e.getGlobalVariable;e.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?y+1:C.apply(this,arguments)};document.body.appendChild(e.container);a.updatePageRoot(m);e.model.setRoot(m.root)}p=b(e,p,y!=l);e!=f&&e.container.parentNode.removeChild(e.container)}}else p=b(f);null==p?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(p.mathEnabled&&(l=p.wnd.document,
 l.writeln('<script type="text/x-mathjax-config">'),l.writeln("MathJax.Hub.Config({"),l.writeln("showMathMenu: false,"),l.writeln('messageStyle: "none",'),l.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),l.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),l.writeln('"HTML-CSS": {'),l.writeln("imageFont: null"),l.writeln("},"),l.writeln("TeX: {"),l.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),l.writeln("},"),
 l.writeln("tex2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("},"),l.writeln("asciimath2jax: {"),l.writeln('\tignoreClass: "geDisableMathJax"'),l.writeln("}"),l.writeln("});"),d&&(l.writeln("MathJax.Hub.Queue(function () {"),l.writeln("window.print();"),l.writeln("});")),l.writeln("\x3c/script>"),l.writeln('<script type="text/javascript" src="https://math.draw.io/current/MathJax.js">\x3c/script>')),p.closeDocument(),!p.mathEnabled&&d&&PrintDialog.printPreview(p))}var f=a.editor.graph,
 e=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,d||mxResources.get("print"));e.appendChild(g);var l=1,n=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-bottom:8px;";k.setAttribute("value","all");k.setAttribute("type","radio");k.setAttribute("name",
 "pages-printdialog");p.appendChild(k);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));p.appendChild(g);mxUtils.br(p);var t=k.cloneNode(!0);k.setAttribute("checked","checked");t.setAttribute("value","range");p.appendChild(t);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");p.appendChild(g);var u=document.createElement("input");u.style.cssText="margin:0 8px 0 8px;";u.setAttribute("value","1");u.setAttribute("type","number");u.setAttribute("min",
-"1");u.style.width="50px";p.appendChild(u);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));p.appendChild(g);var B=u.cloneNode(!0);p.appendChild(B);mxEvent.addListener(u,"focus",function(){t.checked=!0});mxEvent.addListener(B,"focus",function(){t.checked=!0});mxEvent.addListener(u,"change",b);mxEvent.addListener(B,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){n=g+1;u.value=n;B.value=n;break}u.setAttribute("max",
-l);B.setAttribute("max",l);1<l&&e.appendChild(p);var x=document.createElement("div");x.style.marginBottom="10px";var m=document.createElement("input");m.style.marginRight="8px";m.setAttribute("value","adjust");m.setAttribute("type","radio");m.setAttribute("name","printZoom");x.appendChild(m);g=document.createElement("span");mxUtils.write(g,mxResources.get("adjustTo"));x.appendChild(g);var y=document.createElement("input");y.style.cssText="margin:0 8px 0 8px;";y.setAttribute("value","100 %");y.style.width=
-"50px";x.appendChild(y);mxEvent.addListener(y,"focus",function(){m.checked=!0});e.appendChild(x);var p=p.cloneNode(!1),q=m.cloneNode(!0);q.setAttribute("value","fit");m.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";g.appendChild(q);p.appendChild(g);x=document.createElement("table");x.style.display="inline-block";var r=document.createElement("tbody"),v=document.createElement("tr"),z=v.cloneNode(!0),
+"1");u.style.width="50px";p.appendChild(u);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));p.appendChild(g);var A=u.cloneNode(!0);p.appendChild(A);mxEvent.addListener(u,"focus",function(){t.checked=!0});mxEvent.addListener(A,"focus",function(){t.checked=!0});mxEvent.addListener(u,"change",b);mxEvent.addListener(A,"change",b);if(null!=a.pages&&(l=a.pages.length,null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage==a.pages[g]){n=g+1;u.value=n;A.value=n;break}u.setAttribute("max",
+l);A.setAttribute("max",l);1<l&&e.appendChild(p);var y=document.createElement("div");y.style.marginBottom="10px";var m=document.createElement("input");m.style.marginRight="8px";m.setAttribute("value","adjust");m.setAttribute("type","radio");m.setAttribute("name","printZoom");y.appendChild(m);g=document.createElement("span");mxUtils.write(g,mxResources.get("adjustTo"));y.appendChild(g);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width=
+"50px";y.appendChild(x);mxEvent.addListener(x,"focus",function(){m.checked=!0});e.appendChild(y);var p=p.cloneNode(!1),q=m.cloneNode(!0);q.setAttribute("value","fit");m.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";g.appendChild(q);p.appendChild(g);y=document.createElement("table");y.style.display="inline-block";var r=document.createElement("tbody"),v=document.createElement("tr"),z=v.cloneNode(!0),
 H=document.createElement("td"),I=H.cloneNode(!0),aa=H.cloneNode(!0),L=H.cloneNode(!0),P=H.cloneNode(!0),da=H.cloneNode(!0);H.style.textAlign="right";L.style.textAlign="right";mxUtils.write(H,mxResources.get("fitTo"));var Z=document.createElement("input");Z.style.cssText="margin:0 8px 0 8px;";Z.setAttribute("value","1");Z.setAttribute("min","1");Z.setAttribute("type","number");Z.style.width="40px";I.appendChild(Z);g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsAcross"));
-aa.appendChild(g);mxUtils.write(L,mxResources.get("fitToBy"));var G=Z.cloneNode(!0);P.appendChild(G);mxEvent.addListener(Z,"focus",function(){q.checked=!0});mxEvent.addListener(G,"focus",function(){q.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));da.appendChild(g);v.appendChild(H);v.appendChild(I);v.appendChild(aa);z.appendChild(L);z.appendChild(P);z.appendChild(da);r.appendChild(v);r.appendChild(z);x.appendChild(r);p.appendChild(x);e.appendChild(p);
+aa.appendChild(g);mxUtils.write(L,mxResources.get("fitToBy"));var G=Z.cloneNode(!0);P.appendChild(G);mxEvent.addListener(Z,"focus",function(){q.checked=!0});mxEvent.addListener(G,"focus",function(){q.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));da.appendChild(g);v.appendChild(H);v.appendChild(I);v.appendChild(aa);z.appendChild(L);z.appendChild(P);z.appendChild(da);r.appendChild(v);r.appendChild(z);y.appendChild(r);p.appendChild(y);e.appendChild(p);
 p=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));p.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ja=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));p.appendChild(g);var Q=document.createElement("input");
-Q.style.cssText="margin:0 8px 0 8px;";Q.setAttribute("value","100 %");Q.style.width="60px";p.appendChild(Q);e.appendChild(p);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&g.appendChild(p);a.isOffline()||(x=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),x.className="geBtn",
-g.appendChild(x));PrintDialog.previewEnabled&&(x=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),x.className="geBtn",g.appendChild(x));x=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});x.className="geBtn gePrimaryBtn";g.appendChild(x);a.editor.cancelFirst||g.appendChild(p);e.appendChild(g);this.container=e};var t=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=
+Q.style.cssText="margin:0 8px 0 8px;";Q.setAttribute("value","100 %");Q.style.width="60px";p.appendChild(Q);e.appendChild(p);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&g.appendChild(p);a.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),y.className="geBtn",
+g.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),y.className="geBtn",g.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});y.className="geBtn gePrimaryBtn";g.appendChild(y);a.editor.cancelFirst||g.appendChild(p);e.appendChild(g);this.container=e};var t=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=
 this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),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)):(t.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))}})();
 var ErrorDialog=function(a,b,e,c,k,m,q,r,v,z,d){v=null!=v?v:!0;var f=document.createElement("div");f.style.textAlign="center";if(null!=b){var l=document.createElement("div");l.style.padding="0px";l.style.margin="0px";l.style.fontSize="18px";l.style.paddingBottom="16px";l.style.marginBottom="16px";l.style.borderBottom="1px solid #c0c0c0";l.style.color="gray";l.style.whiteSpace="nowrap";l.style.textOverflow="ellipsis";l.style.overflow="hidden";mxUtils.write(l,b);l.setAttribute("title",b);f.appendChild(l)}b=
-document.createElement("div");b.style.padding="6px";b.innerHTML=e;f.appendChild(b);e=document.createElement("div");e.style.marginTop="16px";e.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",e.appendChild(b),e.style.textAlign="center");null!=z&&(z=mxUtils.button(z,function(){null!=d&&d()}),z.className="geBtn",e.appendChild(z));var n=mxUtils.button(c,function(){v&&a.hideDialog();null!=k&&k()});n.className="geBtn";e.appendChild(n);
-null!=q&&(c=mxUtils.button(q,function(){v&&a.hideDialog();null!=r&&r()}),c.className="geBtn gePrimaryBtn",e.appendChild(c));this.init=function(){n.focus()};f.appendChild(e);this.container=f};
+document.createElement("div");b.style.padding="6px";b.innerHTML=e;f.appendChild(b);e=document.createElement("div");e.style.marginTop="16px";e.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",e.appendChild(b),e.style.textAlign="center");null!=z&&(z=mxUtils.button(z,function(){null!=d&&d()}),z.className="geBtn",e.appendChild(z));var p=mxUtils.button(c,function(){v&&a.hideDialog();null!=k&&k()});p.className="geBtn";e.appendChild(p);
+null!=q&&(c=mxUtils.button(q,function(){v&&a.hideDialog();null!=r&&r()}),c.className="geBtn gePrimaryBtn",e.appendChild(c));this.init=function(){p.focus()};f.appendChild(e);this.container=f};
 (function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,e,c){c.ui=a.ui;return e};a.afterDecode=function(a,e,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(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.logError=function(a,b,c,e,g){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,e,g);else if(EditorUi.enableLogging)try{if(a!=
 EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var d=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=f+"/log?severity="+d+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+
-":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}}catch(x){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):
+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=e?":colno:"+encodeURIComponent(e):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var d=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=d+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):
 "")}catch(l){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(l){}};EditorUi.debug=function(){if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);
 console.log.apply(console,a)}};EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';
 EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.sidebarFooterHeight=36;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";
 EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=
 !1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(g){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c,
-0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(p){}};c.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(g){}try{b=document.createElement("canvas");b.width=b.height=1;var e=
+0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(n){}};c.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(g){}try{b=document.createElement("canvas");b.width=b.height=1;var e=
 b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==e.match("image/jpeg")}catch(g){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled=
 function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return"1"==urlParams.appcache||this.isOfflineApp()};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(){return this.isOfflineApp()||!navigator.onLine||
 "1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var d=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),f=d.spin;d.spin=function(c,e){var g=!1;this.active||(f.call(this,c),this.active=!0,null!=e&&(g=document.createElement("div"),g.style.position="absolute",g.style.whiteSpace="nowrap",g.style.background="#4B4243",g.style.color="white",
 g.style.fontFamily="Helvetica, Arial",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,a)+"px",g.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(g.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=e.substring(e.length-3,e.length)&&(e+="..."),g.innerHTML=e,c.appendChild(g),
 d.status=g,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(g.style.left=Math.round(Math.max(0,a-g.offsetWidth/2))+"px",g.style.top=Math.round(Math.max(0,b+70-g.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,e)}));this.stop();return a}),g=!0);return g};var e=d.stop;d.stop=function(){e.call(this);this.active=!1;null!=d.status&&(d.status.parentNode.removeChild(d.status),d.status=null)};
 d.pause=function(){return function(){}};return d};EditorUi.parsePng=function(a,b,c){function d(a,d){var b=e;e+=d;return a.substring(b,e)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var e=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(d(a,4),"IHDR"!=d(a,4))null!=c&&c();else{d(a,17);do{c=f(a);var l=d(a,4);if(null!=b&&b(e-8,l,c))break;value=d(a,c);d(a,4);if("IEND"==l)break}while(c)}};
-EditorUi.prototype.isCompatibleString=function(a){try{var d=mxUtils.parseXml(a),b=this.editor.extractGraphModel(d.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(n){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var b=a.apply(this,arguments);if(null==b)try{var c=d.indexOf("&lt;mxfile ");if(0<=c){var e=d.lastIndexOf("&lt;/mxfile&gt;");e>c&&(b=d.substring(c,e+15).replace(/&gt;/g,">").replace(/&lt;/g,
-"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(d),p=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=p?mxUtils.getXml(p):""}catch(B){}return b};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var d=a.indexOf('<meta charset="utf-8">');0<=d&&(a=a.slice(0,d)+'<meta charset="utf-8"/>'+a.slice(d+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=
-function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a){d=this.editor.graph;d.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var e=c.length-1;0<=e;e--){var p=this.updatePageRoot(new DiagramPage(c[e]));
-null==p.getName()&&p.setName(mxResources.get("pageWithNumber",[e+1]));d.model.execute(new ChangePage(this,p,0==e?p:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=
-this.editor.graph.model.root);if(null!=b)for(e=0;e<b.length;e++)d.model.execute(new ChangePage(this,b[e],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,e,g,p,k,x,t,m){b=null!=b?b:this.editor.graph;g=null!=g?g:!1;t=null!=t?t:!0;var d,f=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":f=d=e;if(null==a)return"";var l=a;if("mxfile"!=l.nodeName.toLowerCase()){var n=b.zapGremlins(mxUtils.getXml(a)),l=b.compress(n);if(b.decompress(l)!=
-n)return n;n=a.ownerDocument.createElement("diagram");n.setAttribute("id",Editor.guid());mxUtils.setTextContent(n,l);l=a.ownerDocument.createElement("mxfile");l.appendChild(n)}m?(l=l.cloneNode(!0),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type"),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("host",
-window.location.hostname),l.setAttribute("agent",navigator.userAgent),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&l.setAttribute("type",a));a=mxUtils.getXml(l);if(!p&&!g&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(l),b,null!=c?c.getTitle():null,d,f);else if(p||!g&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(e=null),a=this.getEmbeddedSvg(a,
-b,e,null,x,t,f);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(d=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(d))),mxUtils.setTextContent(this.currentPage.node,d),d=this.fileNode.cloneNode(!1),b)d.appendChild(this.currentPage.node);else for(var c=0;c<this.pages.length;c++){if(this.currentPage!=this.pages[c]&&this.pages[c].needsUpdate){var f=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[c].root));
+EditorUi.prototype.isCompatibleString=function(a){try{var d=mxUtils.parseXml(a),b=this.editor.extractGraphModel(d.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(p){}return!1};var a=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var b=a.apply(this,arguments);if(null==b)try{var c=d.indexOf("&lt;mxfile ");if(0<=c){var e=d.lastIndexOf("&lt;/mxfile&gt;");e>c&&(b=d.substring(c,e+15).replace(/&gt;/g,">").replace(/&lt;/g,
+"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(d),n=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=n?mxUtils.getXml(n):""}catch(A){}return b};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var d=a.indexOf('<meta charset="utf-8">');0<=d&&(a=a.slice(0,d)+'<meta charset="utf-8"/>'+a.slice(d+23-1,a.length));a=this.editor.graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=
+function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a){d=this.editor.graph;d.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var e=c.length-1;0<=e;e--){var n=this.updatePageRoot(new DiagramPage(c[e]));
+null==n.getName()&&n.setName(mxResources.get("pageWithNumber",[e+1]));d.model.execute(new ChangePage(this,n,0==e?n:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),d.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=
+this.editor.graph.model.root);if(null!=b)for(e=0;e<b.length;e++)d.model.execute(new ChangePage(this,b[e],null))}finally{d.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,e,g,n,k,y,t,m){b=null!=b?b:this.editor.graph;g=null!=g?g:!1;t=null!=t?t:!0;var d,f=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?d="_blank":f=d=e;if(null==a)return"";var l=a;if("mxfile"!=l.nodeName.toLowerCase()){var p=b.zapGremlins(mxUtils.getXml(a)),l=b.compress(p);if(b.decompress(l)!=
+p)return p;p=a.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,l);l=a.ownerDocument.createElement("mxfile");l.appendChild(p)}m?(l=l.cloneNode(!0),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type"),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("host",
+window.location.hostname),l.setAttribute("agent",navigator.userAgent),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&l.setAttribute("type",a));a=mxUtils.getXml(l);if(!n&&!g&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))a=this.getHtml2(mxUtils.getXml(l),b,null!=c?c.getTitle():null,d,f);else if(n||!g&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(e=null),a=this.getEmbeddedSvg(a,
+b,e,null,y,t,f);return a};EditorUi.prototype.getXmlFileData=function(a,b){a=null!=a?a:!0;b=null!=b?b:!1;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(d=this.editor.graph.compress(this.editor.graph.zapGremlins(mxUtils.getXml(d))),mxUtils.setTextContent(this.currentPage.node,d),d=this.fileNode.cloneNode(!1),b)d.appendChild(this.currentPage.node);else for(var c=0;c<this.pages.length;c++){if(this.currentPage!=this.pages[c]&&this.pages[c].needsUpdate){var f=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[c].root));
 this.editor.graph.saveViewState(this.pages[c].viewState,f);mxUtils.setTextContent(this.pages[c].node,this.editor.graph.compressNode(f));delete this.pages[c].needsUpdate}d.appendChild(this.pages[c].node)}return d};EditorUi.prototype.anonymizeString=function(a,b){for(var d=[],c=0;c<a.length;c++){var f=a.charAt(c);0<=EditorUi.ignoredAnonymizedChars.indexOf(f)?d.push(f):isNaN(parseInt(f))?f.toLowerCase()!=f?d.push(String.fromCharCode(65+Math.round(25*Math.random()))):f.toUpperCase()!=f?d.push(String.fromCharCode(97+
-Math.round(25*Math.random()))):/\s/.test(f)?d.push(" "):d.push("?"):d.push(b?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var d=0;d<a[EditorUi.DIFF_INSERT].length;d++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(b)}catch(p){a[EditorUi.DIFF_INSERT][d].data=
-p.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var c in a[EditorUi.DIFF_UPDATE]){var e=a[EditorUi.DIFF_UPDATE][c];null!=e.name&&(e.name=this.anonymizeString(e.name));null!=e.cells&&(d=mxUtils.bind(this,function(a){var d=e.cells[a];if(null!=d){for(var b in d)null!=d[b].value&&(d[b].value="["+d[b].value.length+"]"),null!=d[b].xmlValue&&(d[b].xmlValue="["+d[b].xmlValue.length+"]"),null!=d[b].style&&(d[b].style="["+d[b].style.length+"]"),0==Object.keys(d[b]).length&&delete d[b];0==Object.keys(d).length&&
+Math.round(25*Math.random()))):/\s/.test(f)?d.push(" "):d.push("?"):d.push(b?"0":Math.round(9*Math.random()))}return d.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var d=0;d<a[EditorUi.DIFF_INSERT].length;d++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][d].data).documentElement.cloneNode(!1);null!=b.getAttribute("name")&&b.setAttribute("name",this.anonymizeString(b.getAttribute("name")));a[EditorUi.DIFF_INSERT][d].data=mxUtils.getXml(b)}catch(n){a[EditorUi.DIFF_INSERT][d].data=
+n.message}if(null!=a[EditorUi.DIFF_UPDATE]){for(var c in a[EditorUi.DIFF_UPDATE]){var e=a[EditorUi.DIFF_UPDATE][c];null!=e.name&&(e.name=this.anonymizeString(e.name));null!=e.cells&&(d=mxUtils.bind(this,function(a){var d=e.cells[a];if(null!=d){for(var b in d)null!=d[b].value&&(d[b].value="["+d[b].value.length+"]"),null!=d[b].xmlValue&&(d[b].xmlValue="["+d[b].xmlValue.length+"]"),null!=d[b].style&&(d[b].style="["+d[b].style.length+"]"),0==Object.keys(d[b]).length&&delete d[b];0==Object.keys(d).length&&
 delete e.cells[a]}}),d(EditorUi.DIFF_INSERT),d(EditorUi.DIFF_UPDATE),0==Object.keys(e.cells).length&&delete e.cells);0==Object.keys(e).length&&delete a[EditorUi.DIFF_UPDATE][c]}0==Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var d=0;d<a.attributes.length;d++)"as"!=a.attributes[d].name&&a.setAttribute(a.attributes[d].name,this.anonymizeString(a.attributes[d].value,b));if(null!=a.childNodes)for(d=
 0;d<a.childNodes.length;d++)this.anonymizeAttributes(a.childNodes[d],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var d=a.getElementsByTagName("mxCell"),c=0;c<d.length;c++)null!=d[c].getAttribute("value")&&d[c].setAttribute("value","["+d[c].getAttribute("value").length+"]"),null!=d[c].getAttribute("xmlValue")&&d[c].setAttribute("xmlValue","["+d[c].getAttribute("xmlValue").length+"]"),null!=d[c].getAttribute("style")&&d[c].setAttribute("style","["+d[c].getAttribute("style").length+"]"),null!=
 d[c].parentNode&&"root"!=d[c].parentNode.nodeName&&null!=d[c].parentNode.parentNode&&(d[c].setAttribute("id",d[c].parentNode.getAttribute("id")),d[c].parentNode.parentNode.replaceChild(d[c],d[c].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var d=this.getCurrentFile();null!=d&&(d.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&d.invalidChecksum?d.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(d.clearAutosave(),
-this.editor.setStatus(""),a?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,e,g,p,k,x,t){g=null!=g?g:!0;k=null!=k?k:this.getXmlFileData(g,null!=p?p:!1);t=null!=t?t:this.getCurrentFile();p=this.editor.graph;
-if(null!=this.pages&&this.currentPage!=this.pages[0]&&(b||!a&&null!=t&&/(\.svg)$/i.test(t.getTitle()))){p=this.createTemporaryGraph(p.getStylesheet());var d=p.getGlobalVariable,f=this.pages[0];p.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:d.apply(this,arguments)};document.body.appendChild(p.container);p.model.setRoot(f.root)}a=this.createFileData(k,p,t,window.location.href,a,b,c,e,g,x);p!=this.editor.graph&&p.container.parentNode.removeChild(p.container);return a};
-EditorUi.prototype.getHtml=function(a,b,c,e,g,p){p=null!=p?p:!0;var d=null,f=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var d=p?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),l=b.view.scale;p=Math.floor(d.x/l-b.view.translate.x);l=Math.floor(d.y/l-b.view.translate.y);d=b.background;null==g&&(b=this.getBasenames().join(";"),0<b.length&&(f=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",p);a.setAttribute("y0",l)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom",
+this.editor.setStatus(""),a?d.reloadFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)})):d.synchronizeFile(mxUtils.bind(this,function(){d.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){d.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,e,g,n,k,y,t){g=null!=g?g:!0;k=null!=k?k:this.getXmlFileData(g,null!=n?n:!1);t=null!=t?t:this.getCurrentFile();n=this.editor.graph;
+if(null!=this.pages&&this.currentPage!=this.pages[0]&&(b||!a&&null!=t&&/(\.svg)$/i.test(t.getTitle()))){n=this.createTemporaryGraph(n.getStylesheet());var d=n.getGlobalVariable,f=this.pages[0];n.getGlobalVariable=function(a){return"page"==a?f.getName():"pagenumber"==a?1:d.apply(this,arguments)};document.body.appendChild(n.container);n.model.setRoot(f.root)}a=this.createFileData(k,n,t,window.location.href,a,b,c,e,g,y);n!=this.editor.graph&&n.container.parentNode.removeChild(n.container);return a};
+EditorUi.prototype.getHtml=function(a,b,c,e,g,n){n=null!=n?n:!0;var d=null,f=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var d=n?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),l=b.view.scale;n=Math.floor(d.x/l-b.view.translate.x);l=Math.floor(d.y/l-b.view.translate.y);d=b.background;null==g&&(b=this.getBasenames().join(";"),0<b.length&&(f=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",n);a.setAttribute("y0",l)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom",
 "1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=e&&a.setAttribute("edit",e));null!=g&&(g=g.replace(/&/g,"&amp;"));a=null!=a?this.editor.graph.zapGremlins(mxUtils.getXml(a)):"";e=this.editor.graph.compress(a);this.editor.graph.decompress(e)!=a&&(e=encodeURIComponent(a));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':
 ">")+"\n<head>\n"+(null==g?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+"</head>\n<body"+(null==g&&null!=d&&d!=mxConstants.NONE?' style="background-color:'+d+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==g?'<script type="text/javascript" src="'+f+'">\x3c/script>':
 '<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+g+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,e,g){b=EditorUi.drawHost+"/js/viewer.min.js";null!=g&&(g=g.replace(/&/g,"&amp;"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:this.editor.graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=
@@ -2917,29 +2922,29 @@ mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==g?'<script type="tex
 null;var d=null!=a?a.getElementsByTagName("parsererror"):null;if(null!=d&&0<d.length)throw a=mxResources.get("invalidOrMissingFile"),d=d[0].getElementsByTagName("div"),0<d.length&&(a=mxUtils.getTextContent(d[0])),Error(a);d=null!=a?this.editor.extractGraphModel(a,!0):null;null!=d&&(a=d);if(null!=a&&"mxfile"==a.nodeName&&(d=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){this.fileNode=a;this.pages=[];for(a=0;a<d.length;a++){null==d[a].getAttribute("id")&&
 d[a].setAttribute("id",a);var b=new DiagramPage(d[a]);null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[a+1]));this.pages.push(b)}this.currentPage=this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),
 this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root)};EditorUi.prototype.getBaseFilename=function(a){var d=this.getCurrentFile(),d=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d)||/(\.drawio)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
-0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(a,b,c,e,g,p,k){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!g),f=d+"."+a;if("xml"==a){var l='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(e)):this.getFileData(!0,null,null,null,e,g));this.saveData(f,a,l,"text/xml")}else if("html"==a)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(f,
-a,l,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?f=d+".png":"jpeg"==a&&(f=d+".jpg"),this.saveRequest(f,a,mxUtils.bind(this,function(d,b){try{var c=this.editor.graph.pageVisible;null!=p&&(this.editor.graph.pageVisible=p);var f=this.createDownloadRequest(d,a,e,b,k,g);this.editor.graph.pageVisible=c;return f}catch(C){this.handleError(C)}}));else{var n=null,B=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(f,
-"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(n)}))});if("svg"==a){var m=this.editor.graph.background;if(k||m==mxConstants.NONE)m=null;var q=this.editor.graph.getSvg(m,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(q);this.convertImages(q,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();B('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+
-mxUtils.getXml(a))})))}else f=d+".svg",n=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();B(a)}),e)}}catch(S){this.handleError(S)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,e,g,p){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==p?!1:"xmlpng"!=b);var f="",l="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==p&&(l="&allPages=1");if("xmlpng"==b&&
-(d="1",b="png",null!=this.pages&&null!=this.currentPage))for(p=0;p<this.pages.length;p++)if(this.pages[p]==this.currentPage){f="&from="+p;break}p=this.editor.graph.background;"png"==b&&g&&(p=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+f+l+"&bg="+(null!=p?p:mxConstants.NONE)+"&base64="+e+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,
+0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(a,b,c,e,g,n,k){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();var d=this.getBaseFilename(!g),f=d+"."+a;if("xml"==a){var l='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(e)):this.getFileData(!0,null,null,null,e,g));this.saveData(f,a,l,"text/xml")}else if("html"==a)l=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(f,
+a,l,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?f=d+".png":"jpeg"==a&&(f=d+".jpg"),this.saveRequest(f,a,mxUtils.bind(this,function(d,b){try{var c=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var f=this.createDownloadRequest(d,a,e,b,k,g);this.editor.graph.pageVisible=c;return f}catch(C){this.handleError(C)}}));else{var p=null,A=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(f,
+"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==a){var m=this.editor.graph.background;if(k||m==mxConstants.NONE)m=null;var q=this.editor.graph.getSvg(m,null,null,null,null,e);c&&this.editor.graph.addSvgShadow(q);this.convertImages(q,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();A('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+
+mxUtils.getXml(a))})))}else f=d+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();A(a)}),e)}}catch(S){this.handleError(S)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,e,g,n){var d=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==n?!1:"xmlpng"!=b);var f="",l="";if(d.width*d.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};d="0";"pdf"==b&&0==n&&(l="&allPages=1");if("xmlpng"==b&&
+(d="1",b="png",null!=this.pages&&null!=this.currentPage))for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){f="&from="+n;break}n=this.editor.graph.background;"png"==b&&g&&(n=mxConstants.NONE);return new mxXmlRequest(EXPORT_URL,"format="+b+f+l+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+e+"&embedXml="+d+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,
 b,c){var d=window.location.hash,f=mxUtils.bind(this,function(c){var f=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<f.length&&(f+="\n"),f+=c);c=new LocalFile(this,"csv"!=a.format&&0<f.length?f:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(f,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));
-if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,g=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){d===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),p()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),p=mxUtils.bind(this,function(){window.clearTimeout(g);
-g=window.setTimeout(l,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){p();l()}));p();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function d(a){var d=new mxCellOverlay(a.image||e.warningImage,a.tooltip,a.align,
-a.valign,a.offset);d.addListener(mxEvent.CLICK,function(d,b){c.alert(a.tooltip)});return d}var b=null,c=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var e=this.editor.graph,p=e.getModel();p.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var x=p.getCell(a.getAttribute("id"));if(null!=x){try{var t=a.getAttribute("value");if(null!=t){var m=mxUtils.parseXml(t).documentElement;if(null!=m)if("1"==
-m.getAttribute("replace-value"))p.setValue(x,m);else for(var u=m.attributes,A=0;A<u.length;A++)e.setAttributeForCell(x,u[A].nodeName,0<u[A].nodeValue.length?u[A].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+x.id+": "+M)}try{var q=a.getAttribute("style");null!=q&&e.model.setStyle(x,q)}catch(M){null!=window.console&&console.log("Error in style for "+x.id+": "+M)}try{var r=a.getAttribute("icon");if(null!=r){var v=0<r.length?JSON.parse(r):null;null!=v&&v.append||e.removeCellOverlays(x);
-null!=v&&e.addCellOverlay(x,d(v))}}catch(M){null!=window.console&&console.log("Error in icon for "+x.id+": "+M)}try{var z=a.getAttribute("geometry");if(null!=z){var z=JSON.parse(z),K=e.getCellGeometry(x);if(null!=K){K=K.clone();for(key in z){var E=parseFloat(z[key]);"dx"==key?K.x+=E:"dy"==key?K.y+=E:"dw"==key?K.width+=E:"dh"==key?K.height+=E:K[key]=parseFloat(z[key])}e.model.setGeometry(x,K)}}}catch(M){null!=window.console&&console.log("Error in icon for "+x.id+": "+M)}}}else if("model"==a.nodeName){for(var C=
-a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C=C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,p)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(e.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{p.endUpdate()}null!=
-k&&this.chromelessResize&&this.chromelessResize(!0,k)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",f=d.lastIndexOf(".");0<=f&&(c=d.substring(f),d=d.substring(0,f));if(b)var e=new Date,f=e.getFullYear(),k=e.getMonth()+1,x=e.getDate(),t=e.getHours(),m=e.getMinutes(),e=e.getSeconds(),d=d+(" "+(f+"-"+k+"-"+x+"-"+t+"-"+m+"-"+e));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var d=
+if(null!=a.update){var e=null!=a.interval?parseInt(a.interval):6E4,g=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){d===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),n()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),n=mxUtils.bind(this,function(){window.clearTimeout(g);
+g=window.setTimeout(l,e)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){n();l()}));n();l()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var e=a.url;/^https?:\/\//.test(e)&&!this.isCorsEnabledForUrl(e)&&(e=PROXY_URL+"?url="+encodeURIComponent(e));this.loadUrl(e,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function d(a){var d=new mxCellOverlay(a.image||e.warningImage,a.tooltip,a.align,
+a.valign,a.offset);d.addListener(mxEvent.CLICK,function(d,b){c.alert(a.tooltip)});return d}var b=null,c=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var e=this.editor.graph,n=e.getModel();n.beginUpdate();var k=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var m=n.getCell(a.getAttribute("id"));if(null!=m){try{var t=a.getAttribute("value");if(null!=t){var x=mxUtils.parseXml(t).documentElement;if(null!=x)if("1"==
+x.getAttribute("replace-value"))n.setValue(m,x);else for(var u=x.attributes,q=0;q<u.length;q++)e.setAttributeForCell(m,u[q].nodeName,0<u[q].nodeValue.length?u[q].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+m.id+": "+M)}try{var B=a.getAttribute("style");null!=B&&e.model.setStyle(m,B)}catch(M){null!=window.console&&console.log("Error in style for "+m.id+": "+M)}try{var r=a.getAttribute("icon");if(null!=r){var v=0<r.length?JSON.parse(r):null;null!=v&&v.append||e.removeCellOverlays(m);
+null!=v&&e.addCellOverlay(m,d(v))}}catch(M){null!=window.console&&console.log("Error in icon for "+m.id+": "+M)}try{var z=a.getAttribute("geometry");if(null!=z){var z=JSON.parse(z),K=e.getCellGeometry(m);if(null!=K){K=K.clone();for(key in z){var F=parseFloat(z[key]);"dx"==key?K.x+=F:"dy"==key?K.y+=F:"dw"==key?K.width+=F:"dh"==key?K.height+=F:K[key]=parseFloat(z[key])}e.model.setGeometry(m,K)}}}catch(M){null!=window.console&&console.log("Error in icon for "+m.id+": "+M)}}}else if("model"==a.nodeName){for(var C=
+a.firstChild;null!=C&&C.nodeType!=mxConstants.NODETYPE_ELEMENT;)C=C.nextSibling;null!=C&&(new mxCodec(a.firstChild)).decode(C,n)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(e.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(k=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{n.endUpdate()}null!=
+k&&this.chromelessResize&&this.chromelessResize(!0,k)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var d=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",f=d.lastIndexOf(".");0<=f&&(c=d.substring(f),d=d.substring(0,f));if(b)var e=new Date,f=e.getFullYear(),k=e.getMonth()+1,m=e.getDate(),t=e.getHours(),x=e.getMinutes(),e=e.getSeconds(),d=d+(" "+(f+"-"+k+"-"+m+"-"+t+"-"+x+"-"+e));return d=mxResources.get("copyOf",[d])+c};EditorUi.prototype.fileLoaded=function(a){var d=
 this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var b=!1;this.hideDialog();null!=d&&(d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var c=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);null!=window.location.hash&&0<window.location.hash.length&&
 (window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();
 delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?
 (this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));b=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:"File",action:"open",label:a.getMode()+"."+a.getSize()});if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),
 title:a.getTitle(),mode:a.getMode()})}catch(g){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(g){}}catch(g){this.fileLoadedError=g;null!=window.console&&console.log("error in fileLoaded:",a,g);if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=g&&null!=g.message?":err:"+
-encodeURIComponent(g.message):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}catch(p){}this.handleError(g,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):c()}),!0)}else c();return b};EditorUi.prototype.getHashValueForPages=function(a,b){var d=0,c=new mxGraphModel,f=new mxCodec;null!=b&&(b.byteCount=0,
-b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var e=0;e<a.length;e++){this.updatePageRoot(a[e]);var k=a[e].node.cloneNode(!1);k.removeAttribute("name");c.root=a[e].root;var x=f.encode(c);this.editor.graph.saveViewState(a[e].viewState,x,!0);x.removeAttribute("pageWidth");x.removeAttribute("pageHeight");k.appendChild(x);null!=b&&(b.eltCount+=k.getElementsByTagName("*").length,b.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(a,d,b,c){return!c||"mxGeometry"!=
+encodeURIComponent(g.message):"")+(null!=g&&null!=g.stack?"&stack="+encodeURIComponent(g.stack):"")}catch(n){}this.handleError(g,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=d?this.fileLoaded(d):c()}),!0)}else c();return b};EditorUi.prototype.getHashValueForPages=function(a,b){var d=0,c=new mxGraphModel,f=new mxCodec;null!=b&&(b.byteCount=0,
+b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var e=0;e<a.length;e++){this.updatePageRoot(a[e]);var k=a[e].node.cloneNode(!1);k.removeAttribute("name");c.root=a[e].root;var m=f.encode(c);this.editor.graph.saveViewState(a[e].viewState,m,!0);m.removeAttribute("pageWidth");m.removeAttribute("pageHeight");k.appendChild(m);null!=b&&(b.eltCount+=k.getElementsByTagName("*").length,b.nodeCount+=k.getElementsByTagName("mxCell").length);d=(d<<5)-d+this.hashValue(k,function(a,d,b,c){return!c||"mxGeometry"!=
 a.nodeName&&"mxPoint"!=a.nodeName||"x"!=d&&"y"!=d&&"width"!=d&&"height"!=d?c&&"mxCell"==a.nodeName&&"previous"==d?null:b:Math.round(b)},b)<<0}return d};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var f=0;f<a.attributes.length;f++){var e=a.attributes[f].name,
 l=null!=b?b(a,e,a.attributes[f].value,!0):a.attributes[f].value;null!=l&&(d^=this.hashValue(e,b,c)+this.hashValue(l,b,c))}}if(null!=a.childNodes)for(f=0;f<a.childNodes.length;f++)d=(d<<5)-d+this.hashValue(a.childNodes[f],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(f=0;f<a.length;f++)b=(b<<5)-b+a.charCodeAt(f)<<0;d^=b}return d};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=
-function(a,b,c,e,g,p,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var d=mxUtils.createXmlDocument(),
+function(a,b,c,e,g,n,k){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var d=mxUtils.createXmlDocument(),
 b=d.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));d.appendChild(b);return mxUtils.getXml(d)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var d=this.sidebar.palettes[a];if(null!=d){for(var b=0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);delete this.sidebar.palettes[a]}};
 EditorUi.prototype.repositionLibrary=function(a){var d=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a=null!=a?a:d.firstChild.nextSibling.nextSibling;var b=d.lastChild,c=b.previousSibling;d.insertBefore(b,a);d.insertBefore(c,b)};EditorUi.prototype.loadLibrary=function(a){var d=mxUtils.parseXml(a.getData());if("mxlibrary"==d.documentElement.nodeName){var b=JSON.parse(mxUtils.getTextContent(d.documentElement));
 this.libraryLoaded(a,b,d.documentElement.getAttribute("title"))}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var d=this.sidebar.palettes[a.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var f=null,
@@ -2947,19 +2952,19 @@ e=mxUtils.bind(this,function(d,b){0==d.length&&a.isEditable()?(null==f&&(f=docum
 mxUtils.bind(this,function(){d=this.convertDataUri(d);var b="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(b+="aspect=fixed;");return this.sidebar.createVertexTemplate(b+"image="+d,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var d=this.stringToCells(this.editor.graph.decompress(a.xml));return this.sidebar.createVertexTemplateFromCells(d,a.w,a.h,a.title||"",!0,!1,!0)}))})(b[l]);
 c=null!=c&&0<c.length?c:a.getTitle();var k=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){e(b,a)}));this.repositionLibrary(d);var t=k.parentNode.previousSibling;c=t.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&t.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var m=document.createElement("div");m.style.position="absolute";m.style.right="0px";m.style.top="0px";m.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||(m.style.backgroundColor=
 "inherit");t.style.position="relative";var u=document.createElement("img");u.setAttribute("src",Dialog.prototype.closeImage);u.setAttribute("title",mxResources.get("close"));u.setAttribute("valign","absmiddle");u.setAttribute("border","0");u.style.margin="0 3px";var q=null;if(".scratchpad"!=a.title||this.closableScratchpad)m.appendChild(u),mxEvent.addListener(u,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var b=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=q?this.confirm(mxResources.get("allChangesLost"),
-null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(d)}}));if(a.isEditable()){var D=this.editor.graph,r=null,v=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),k,b,a,a.getMode());mxEvent.consume(d)}),z=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=r&&null!=r.parentNode&&r.parentNode.removeChild(r),r=u.cloneNode(!1),r.setAttribute("src",Editor.spinImage),r.setAttribute("title",mxResources.get("saving")),r.style.cursor="default",
+null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(d)}}));if(a.isEditable()){var B=this.editor.graph,r=null,v=mxUtils.bind(this,function(d){this.showLibraryDialog(a.getTitle(),k,b,a,a.getMode());mxEvent.consume(d)}),z=mxUtils.bind(this,function(d){a.setModified(!0);a.isAutosave()?(null!=r&&null!=r.parentNode&&r.parentNode.removeChild(r),r=u.cloneNode(!1),r.setAttribute("src",Editor.spinImage),r.setAttribute("title",mxResources.get("saving")),r.style.cursor="default",
 r.style.marginRight="2px",r.style.marginTop="-2px",m.insertBefore(r,m.firstChild),t.style.paddingRight=18*m.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=r&&null!=r.parentNode&&(r.parentNode.removeChild(r),t.style.paddingRight=18*m.childNodes.length+"px")})):null==q&&(q=u.cloneNode(!1),q.setAttribute("src",IMAGE_PATH+"/download.png"),q.setAttribute("title",mxResources.get("save")),m.insertBefore(q,m.firstChild),mxEvent.addListener(q,"click",mxUtils.bind(this,
-function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==q||a.isModified()||(t.style.paddingRight=18*m.childNodes.length+"px",q.parentNode.removeChild(q),q=null)});mxEvent.consume(d)})),t.style.paddingRight=18*m.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=D.cloneCells(mxUtils.sortCells(D.model.getTopmostCells(a)));for(var g=0;g<a.length;g++){var l=D.getCellGeometry(a[g]);null!=l&&l.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(a,
-d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);z(c);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),E=mxUtils.bind(this,function(a){if(D.isSelectionEmpty())D.getRubberband().isActive()?(D.getRubberband().execute(a),D.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=
-D.getSelectionCells(),b=D.view.getBounds(d),c=D.view.scale;b.x/=c;b.y/=c;b.width/=c;b.height/=c;b.x-=D.view.translate.x;b.y-=D.view.translate.y;K(d,b)}mxEvent.consume(a)});k.style.border="3px solid transparent";mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.panningManager&&null!=D.graphHandler.shape&&(D.graphHandler.shape.node.style.visibility="hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)",
-k.style.cursor="copy",D.panningManager.stop(),D.autoScroll=!1,null!=D.graphHandler.guide&&D.graphHandler.guide.setVisible(!1),null!=D.graphHandler.hint&&(D.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.panningManager&&null!=D.graphHandler&&(k.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"),k.style.cursor="default",this.sidebar.showTooltips=!0,D.panningManager.stop(),D.graphHandler.reset(),
-D.isMouseDown=!1,D.autoScroll=!0,E(a),mxEvent.consume(a))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(a){D.isMouseDown&&null!=D.graphHandler.shape&&(D.graphHandler.shape.node.style.visibility="visible",k.style.border="3px solid transparent",k.style.cursor="",D.autoScroll=!0,null!=D.graphHandler.guide&&D.graphHandler.guide.setVisible(!0),null!=D.graphHandler.hint&&(D.graphHandler.hint.style.visibility="visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&&
+function(d){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==q||a.isModified()||(t.style.paddingRight=18*m.childNodes.length+"px",q.parentNode.removeChild(q),q=null)});mxEvent.consume(d)})),t.style.paddingRight=18*m.childNodes.length+"px")}),K=mxUtils.bind(this,function(a,d,c,e){a=B.cloneCells(mxUtils.sortCells(B.model.getTopmostCells(a)));for(var g=0;g<a.length;g++){var l=B.getCellGeometry(a[g]);null!=l&&l.translate(-d.x,-d.y)}k.appendChild(this.sidebar.createVertexTemplateFromCells(a,
+d.width,d.height,e||"",!0,!1,!1));a={xml:this.editor.graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:d.width,h:d.height};null!=e&&(a.title=e);b.push(a);z(c);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),F=mxUtils.bind(this,function(a){if(B.isSelectionEmpty())B.getRubberband().isActive()?(B.getRubberband().execute(a),B.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=
+B.getSelectionCells(),b=B.view.getBounds(d),c=B.view.scale;b.x/=c;b.y/=c;b.width/=c;b.height/=c;b.x-=B.view.translate.x;b.y-=B.view.translate.y;K(d,b)}mxEvent.consume(a)});k.style.border="3px solid transparent";mxEvent.addGestureListeners(k,function(){},mxUtils.bind(this,function(a){B.isMouseDown&&null!=B.panningManager&&null!=B.graphHandler.shape&&(B.graphHandler.shape.node.style.visibility="hidden",null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)",
+k.style.cursor="copy",B.panningManager.stop(),B.autoScroll=!1,null!=B.graphHandler.guide&&B.graphHandler.guide.setVisible(!1),null!=B.graphHandler.hint&&(B.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){B.isMouseDown&&null!=B.panningManager&&null!=B.graphHandler&&(k.style.border="3px solid transparent",null!=f&&(f.style.border="3px dotted lightGray"),k.style.cursor="default",this.sidebar.showTooltips=!0,B.panningManager.stop(),B.graphHandler.reset(),
+B.isMouseDown=!1,B.autoScroll=!0,F(a),mxEvent.consume(a))}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(a){B.isMouseDown&&null!=B.graphHandler.shape&&(B.graphHandler.shape.node.style.visibility="visible",k.style.border="3px solid transparent",k.style.cursor="",B.autoScroll=!0,null!=B.graphHandler.guide&&B.graphHandler.guide.setVisible(!0),null!=B.graphHandler.hint&&(B.graphHandler.hint.style.visibility="visible"),null!=f&&(f.style.border="3px dotted lightGray"))}));Graph.fileSupport&&
 (mxEvent.addListener(k,"dragover",mxUtils.bind(this,function(a){null!=f?f.style.border="3px dotted rgb(254, 137, 12)":k.style.border="3px dotted rgb(254, 137, 12)";a.dataTransfer.dropEffect="copy";k.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"drop",mxUtils.bind(this,function(a){k.style.border="3px solid transparent";k.style.cursor="";null!=f&&(f.style.border="3px dotted lightGray");0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,
-0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,g,l,p,n,t,u,m){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,K(d,new mxRectangle(0,0,p,n),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var B=!1,x=mxUtils.bind(this,function(d,
-c){if(null!=d&&"text/xml"==c){var g=mxUtils.parseXml(d);if("mxlibrary"==g.documentElement.nodeName)try{var l=JSON.parse(mxUtils.getTextContent(g.documentElement));e(l,k);b=b.concat(l);z(a);this.spinner.stop();B=!0}catch(G){}else if("mxfile"==g.documentElement.nodeName)try{for(var p=g.documentElement.getElementsByTagName("diagram"),g=0;g<p.length;g++){var l=mxUtils.getTextContent(p[g]),n=this.stringToCells(this.editor.graph.decompress(l)),t=this.editor.graph.getBoundingBoxFromGeometry(n);K(n,new mxRectangle(0,
-0,t.width,t.height),a)}B=!0}catch(G){null!=window.console&&console.log("error in drop handler:",G)}}B||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=m&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(m,function(a){x(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,t)&&null!=m?this.parseFile(m,
-mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?x(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):x(d,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(k.style.border="3px solid transparent",k.style.cursor="");a.stopPropagation();a.preventDefault()}));
-u=u.cloneNode(!1);u.setAttribute("src",Editor.editImage);u.setAttribute("title",mxResources.get("edit"));m.insertBefore(u,m.firstChild);mxEvent.addListener(u,"click",v);mxEvent.addListener(k,"dblclick",function(a){mxEvent.getSource(a)==k&&v(a)});c=u.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));m.insertBefore(c,m.firstChild);mxEvent.addListener(c,"click",E);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),
+0,0,this.maxImageSize,mxUtils.bind(this,function(d,c,g,l,n,p,t,u,m){if(null!=d&&"image/"==c.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,n,p),d)],d[0].vertex=!0,K(d,new mxRectangle(0,0,n,p),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var A=!1,y=mxUtils.bind(this,function(d,
+c){if(null!=d&&"text/xml"==c){var g=mxUtils.parseXml(d);if("mxlibrary"==g.documentElement.nodeName)try{var l=JSON.parse(mxUtils.getTextContent(g.documentElement));e(l,k);b=b.concat(l);z(a);this.spinner.stop();A=!0}catch(G){}else if("mxfile"==g.documentElement.nodeName)try{for(var n=g.documentElement.getElementsByTagName("diagram"),g=0;g<n.length;g++){var l=mxUtils.getTextContent(n[g]),p=this.stringToCells(this.editor.graph.decompress(l)),t=this.editor.graph.getBoundingBoxFromGeometry(p);K(p,new mxRectangle(0,
+0,t.width,t.height),a)}A=!0}catch(G){null!=window.console&&console.log("error in drop handler:",G)}}A||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=m&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(m,function(a){y(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,t)&&null!=m?this.parseFile(m,
+mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?y(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):y(d,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(k,"dragleave",function(a){null!=f?f.style.border="3px dotted lightGray":(k.style.border="3px solid transparent",k.style.cursor="");a.stopPropagation();a.preventDefault()}));
+u=u.cloneNode(!1);u.setAttribute("src",Editor.editImage);u.setAttribute("title",mxResources.get("edit"));m.insertBefore(u,m.firstChild);mxEvent.addListener(u,"click",v);mxEvent.addListener(k,"dblclick",function(a){mxEvent.getSource(a)==k&&v(a)});c=u.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));m.insertBefore(c,m.firstChild);mxEvent.addListener(c,"click",F);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),
 c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),m.insertBefore(c,m.firstChild))}t.appendChild(m);t.style.paddingRight=18*m.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var d=0;d<a.length;d++){var c=a[d],f=c.data;if(null!=f){var f=this.convertDataUri(f),
 e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==c.aspect&&(e+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(e+"image="+f,c.w,c.h,"",c.title||"",!1,!1,!0))}else null!=c.xml&&(f=this.stringToCells(this.editor.graph.decompress(c.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,c.w,c.h,c.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=
 0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?"none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground=
@@ -2970,89 +2975,89 @@ EditorUi.initTheme();EditorUi.prototype.hideFooter=function(){var a=document.get
 !0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a){a=null!=a?a:mxUtils.bind(this,function(a){a=new ChangePageSetup(this,null,a);a.ignoreColor=!0;this.editor.graph.model.execute(a)});var d=new BackgroundImageDialog(this,mxUtils.bind(this,function(d){a(d)}));this.showDialog(d.container,360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,e,g){a=new LibraryDialog(this,a,b,c,e,g);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,function(a){a&&null==
 this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var b=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var d=b.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer");a.style.position="absolute";a.style.overflow="hidden";a.style.borderWidth=
 "3px";var b=document.createElement("a");b.className="geTitle";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));a.appendChild(b);return a};EditorUi.prototype.handleError=
-function(a,b,c,e){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=a&&null!=a.error?a.error:a;if(null!=f||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),n=null;b=null!=b?b:mxResources.get("error");if(null!=f)if(null!=f.retry&&(l=mxResources.get("cancel"),n=function(){d();f.retry()}),404==f.code||404==f.status||403==f.code){a=403==f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):
+function(a,b,c,e){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},f=null!=a&&null!=a.error?a.error:a;if(null!=f||null!=b){a=mxUtils.htmlEntities(mxResources.get("unknownError"));var l=mxResources.get("ok"),p=null;b=null!=b?b:mxResources.get("error");if(null!=f)if(null!=f.retry&&(l=mxResources.get("cancel"),p=function(){d();f.retry()}),404==f.code||404==f.status||403==f.code){a=403==f.code?null!=f.message?mxUtils.htmlEntities(f.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):
 mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied"));var k=window.location.hash;null!=k&&"#G"==k.substring(0,2)&&(k=k.substring(2),a+='<br><a href="https://drive.google.com/open?id='+k+'" target="_blank">'+mxUtils.htmlEntities(mxResources.get("tryOpeningViaThisPage"))+"</a>")}else null!=f.message?a=mxUtils.htmlEntities(f.message):null!=f.response&&null!=f.response.error?a=mxUtils.htmlEntities(f.response.error):"undefined"!==window.App&&(f.code==App.ERROR_TIMEOUT?a=mxUtils.htmlEntities(mxResources.get("timeout")):
-f.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,l,c,n,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,g,p,k,m,t,q,u,A,r){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,g,p,k,A,m,t);this.showDialog(a.container,q||340,u||(null!=b&&120<b.length?180:150),!0,!1,r);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container,
-340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,g,p){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,g);this.showDialog(a.container,340,90,!0,p);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||
+f.code==App.ERROR_BUSY&&(a=mxUtils.htmlEntities(mxResources.get("busy"))));this.showError(b,a,l,c,p,null,null,null,null,null,null,null,e?c:null)}else null!=c&&c()};EditorUi.prototype.showError=function(a,b,c,e,g,n,k,m,t,q,u,D,B){a=new ErrorDialog(this,a,b,c||mxResources.get("ok"),e,g,n,k,D,m,t);this.showDialog(a.container,q||340,u||(null!=b&&120<b.length?180:150),!0,!1,B);a.init()};EditorUi.prototype.alert=function(a,b){var d=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(d.container,
+340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(a,b,c,e,g,n){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){};a=new ConfirmDialog(this,a,function(){d();null!=b&&b()},function(){d();null!=c&&c()},e,g);this.showDialog(a.container,340,90,!0,n);a.init()};EditorUi.prototype.setCurrentFile=function(a){this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||
 !this.editor.graph.mathEnabled&&this.useCanvasForExport};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c){var d=a.toDataURL("image/"+c);if(6>=d.length||d==a.cloneNode(!1).toDataURL("image/"+c))throw{message:"Invalid image"};null!=b&&(d=this.writeGraphModelToPng(d,"zTXt","mxGraphModel",atob(this.editor.graph.compress(b))));return d};EditorUi.prototype.saveCanvas=function(a,
 b,c){var d="jpeg"==c?"jpg":c,f=this.getBaseFilename()+"."+d;a=this.createImageDataUri(a,b,c);this.saveData(f,d,a.substring(a.lastIndexOf(",")+1),"image/"+c,!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&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,
 b){var d=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));d.textarea.style.width="600px";d.textarea.style.height="380px";this.showDialog(d.container,620,460,!0,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,e,g){if(window.Blob&&navigator.msSaveOrOpenBlob)a=e?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),
 c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else{var d=document.createElement("a"),f=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof d.download;if(mxClient.IS_GC)var l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),f=65==(l?parseInt(l[2],10):!1)?!1:f;if(f||this.isOffline()){d.href=URL.createObjectURL(e?this.base64ToBlob(a,c):new Blob([a],{type:c}));f?d.download=b:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},
-0),d.click(),d.parentNode.removeChild(d)}catch(t){}}else this.createEchoRequest(a,b,c,e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,g,p){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=g?"&format="+g:"")+(null!=p?"&base64="+p:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,f=Math.ceil(c/1024),e=Array(f),
-k=0;k<f;++k){for(var m=1024*k,t=Math.min(m+1024,c),q=Array(t-m),u=0;m<t;++u,++m)q[u]=d[m].charCodeAt(0);e[k]=new Uint8Array(q)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,g,p,k){p=null!=p?p:!1;k=null!=k?k:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(p);b=new CreateDialog(this,b,mxUtils.bind(this,function(d,b){try{if("_blank"==b)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var f=window.open("about:blank");
-null==f?mxUtils.popup(a,!0):(f.document.write(mxUtils.htmlEntities(a,!1)),f.document.close())}else this.openInNewWindow(a,c,e);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,d,c,e):null!=d&&0<d.length&&this.pickFolder(b,mxUtils.bind(this,function(f){try{this.exportFile(a,d,c,e,b,f)}catch(A){this.handleError(A)}}))}catch(u){this.handleError(u)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,p,k,null,1<g,4<g&&(!p||6>g)?3:4,
+0),d.click(),d.parentNode.removeChild(d)}catch(t){}}else this.createEchoRequest(a,b,c,e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,e,g,n){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=g?"&format="+g:"")+(null!=n?"&base64="+n:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var d=atob(a),c=d.length,f=Math.ceil(c/1024),e=Array(f),
+k=0;k<f;++k){for(var m=1024*k,t=Math.min(m+1024,c),q=Array(t-m),u=0;m<t;++u,++m)q[u]=d[m].charCodeAt(0);e[k]=new Uint8Array(q)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,e,g,n,k){n=null!=n?n:!1;k=null!=k?k:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(n);b=new CreateDialog(this,b,mxUtils.bind(this,function(d,b){try{if("_blank"==b)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var f=window.open("about:blank");
+null==f?mxUtils.popup(a,!0):(f.document.write(mxUtils.htmlEntities(a,!1)),f.document.close())}else this.openInNewWindow(a,c,e);else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,d,c,e):null!=d&&0<d.length&&this.pickFolder(b,mxUtils.bind(this,function(f){try{this.exportFile(a,d,c,e,b,f)}catch(D){this.handleError(D)}}))}catch(u){this.handleError(u)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,n,k,null,1<g,4<g&&(!n||6>g)?3:4,
 a,c,e);this.showDialog(b.container,420,1==g?160:4<g?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+
 b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var e=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var d=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=
 null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var c=d.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";
 this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=c.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=c.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.exportToCanvas(mxUtils.bind(this,function(a){f.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var d=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",d);this.exportDialog.appendChild(a);
 mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(d.substring(d.indexOf(",")+1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}e.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b,
-c,e,g){this.isLocalFileSave()?this.saveLocalFile(c,a,e,g,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,e,g,b,d)}),c,g,e)};EditorUi.prototype.saveRequest=function(a,b,c,e,g,p,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var f=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=f&&(d==
-App.MODE_DEVICE||"download"==d||"_blank"==d?f.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){p=null!=p?p:"pdf"==b?"application/pdf":"image/"+b;if(null!=e)try{this.exportFile(e,a,p,!0,d,c)}catch(D){this.handleError(D)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),a,p,!0,d,c)}catch(D){this.handleError(D)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
-function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<d,4<d?3:4,e,p,g);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,e,g,p){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,e,g,p,k,
-m,t,q){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var f=this.editor.graph.getSvg(d,a,k,m,null,c,null,null,"blank"==q?"_blank":"self"==q?"_top":null);e&&this.editor.graph.addSvgShadow(f);var l=this.getBaseFilename()+".svg",n=mxUtils.bind(this,function(a){this.spinner.stop();g&&a.setAttribute("content",this.getFileData(!0,null,
+c,e,g){this.isLocalFileSave()?this.saveLocalFile(c,a,e,g,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,d){return this.createEchoRequest(c,a,e,g,b,d)}),c,g,e)};EditorUi.prototype.saveRequest=function(a,b,c,e,g,n,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);a=new CreateDialog(this,a,mxUtils.bind(this,function(a,d){if("_blank"==d||null!=a&&0<a.length){var f=c("_blank"==d?null:a,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=f&&(d==
+App.MODE_DEVICE||"download"==d||"_blank"==d?f.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(c){n=null!=n?n:"pdf"==b?"application/pdf":"image/"+b;if(null!=e)try{this.exportFile(e,a,n,!0,d,c)}catch(B){this.handleError(B)}else this.spinner.spin(document.body,mxResources.get("saving"))&&f.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=f.getStatus()&&299>=f.getStatus())try{this.exportFile(f.getText(),a,n,!0,d,c)}catch(B){this.handleError(B)}else this.handleError({message:mxResources.get("errorSavingFile")})}),
+function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<d,4<d?3:4,e,n,g);this.showDialog(a.container,380,1==d?160:4<d?390:270,!0,!0);a.init()};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,e,g,n){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,e,g,n,k,
+m,t,q){if(this.spinner.spin(document.body,mxResources.get("export"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;d=b?null:this.editor.graph.background;d==mxConstants.NONE&&(d=null);null==d&&0==b&&(d="#ffffff");var f=this.editor.graph.getSvg(d,a,k,m,null,c,null,null,"blank"==q?"_blank":"self"==q?"_top":null);e&&this.editor.graph.addSvgShadow(f);var l=this.getBaseFilename()+".svg",p=mxUtils.bind(this,function(a){this.spinner.stop();g&&a.setAttribute("content",this.getFileData(!0,null,
 null,null,c,t));if(null!=this.editor.fontCss){var d=a.ownerDocument,d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"style"):d.createElement("style");d.setAttribute("type","text/css");mxUtils.setTextContent(d,this.editor.fontCss);a.getElementsByTagName("defs")[0].appendChild(d)}var b='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",b,"image/svg+xml"):
-this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,f,!1,mxUtils.bind(this,function(){p?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(f,n,this.thumbImageCache)):n(f)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,e,g,p,k){return this.addCheckbox(a,c,e,g,p,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,e,g,p,k,m){p=null!=p?p:!0;var d=document.createElement("input");
-d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();d.id=k;null!=m&&d.setAttribute("name",m);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);e&&d.setAttribute("disabled","disabled");p&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),g||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+
+this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.convertMath(this.editor.graph,f,!1,mxUtils.bind(this,function(){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(f,p,this.thumbImageCache)):p(f)}))}};EditorUi.prototype.addRadiobox=function(a,b,c,e,g,n,k){return this.addCheckbox(a,c,e,g,n,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,e,g,n,k,m){n=null!=n?n:!0;var d=document.createElement("input");
+d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();d.id=k;null!=m&&d.setAttribute("name",m);c&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);e&&d.setAttribute("disabled","disabled");n&&(a.appendChild(d),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),g||mxUtils.br(a));return d};EditorUi.prototype.addEditButton=function(a,b){var d=this.addCheckbox(a,mxResources.get("edit")+
 ":",!0,null,!0);d.style.marginLeft="24px";var c=this.getCurrentFile(),f="";null!=c&&c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var e=document.createElement("select");e.style.width="120px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("makeCopy"));e.appendChild(c);c=document.createElement("option");c.setAttribute("value","custom");mxUtils.write(c,
 mxResources.get("custom")+"...");e.appendChild(c);a.appendChild(e);mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if("custom"==e.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:e.value="blank"},mxResources.get("url"),null,null,null,null,function(){e.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(d,"change",mxUtils.bind(this,function(){d.checked&&(null==b||b.checked)?e.removeAttribute("disabled"):e.setAttribute("disabled",
 "disabled")}));mxUtils.br(a);return{getLink:function(){return d.checked?"blank"===e.value?"_blank":f:null},getEditInput:function(){return d},getEditSelect:function(){return e}}};EditorUi.prototype.addLinkSection=function(a,b){function d(){k.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=e&&e!=mxConstants.NONE?"border:1px solid black;background-color:"+e:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+
 "')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var c=document.createElement("select");c.style.width="100px";c.style.marginLeft="8px";c.style.marginRight="10px";c.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));c.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));c.appendChild(f);f=document.createElement("option");
 f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));c.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),c.appendChild(f));a.appendChild(c);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",k=null,k=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;d()});mxEvent.consume(a)}));d();k.style.padding=
-mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";a.appendChild(k);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,e,g,k,m,x){var d=this.getCurrentFile(),f=[];e&&(f.push("lightbox=1"),"auto"!=a&&f.push("target="+
-a),null!=b&&b!=mxConstants.NONE&&f.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=g&&0<g.length&&f.push("edit="+encodeURIComponent(g)),k&&f.push("layers=1"),this.editor.graph.foldingEnabled&&f.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&f.push("page="+a));a=!0;null!=m?c="#U"+encodeURIComponent(m):(d=this.getCurrentFile(),x||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):
-(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&f.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<f.length?"?"+f.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,g,k,m,x,t,q,u){this.getBasenames();var d={};""!=g&&g!=mxConstants.NONE&&(d.highlight=g);"auto"!==e&&(d.target=e);t||(d.lightbox=
-!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];m&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);x&&c.push("layers");0<c.length&&(t&&c.push("lightbox"),d.toolbar=c.join(" "));null!=q&&0<q.length&&(d.edit=q);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!m);b='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":
+mxClient.IS_FF?"4px 2px 4px 2px":"4px";k.style.marginLeft="4px";k.style.height="22px";k.style.width="22px";k.style.position="relative";k.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";k.className="geColorBtn";a.appendChild(k);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createLink=function(a,b,c,e,g,n,k,m){var d=this.getCurrentFile(),f=[];e&&(f.push("lightbox=1"),"auto"!=a&&f.push("target="+
+a),null!=b&&b!=mxConstants.NONE&&f.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=g&&0<g.length&&f.push("edit="+encodeURIComponent(g)),n&&f.push("layers=1"),this.editor.graph.foldingEnabled&&f.push("nav=1"));c&&(a=this.getSelectedPageIndex(),0<a&&f.push("page="+a));a=!0;null!=k?c="#U"+encodeURIComponent(k):(d=this.getCurrentFile(),m||null==d||d.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0):this.editor.graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):
+(c="#"+d.getHash(),a=!1));a&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&f.push("title="+encodeURIComponent(d.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<f.length?"?"+f.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,e,g,n,k,m,t,q,u){this.getBasenames();var d={};""!=g&&g!=mxConstants.NONE&&(d.highlight=g);"auto"!==e&&(d.target=e);t||(d.lightbox=
+!1);d.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(d.zoom=c/100);c=[];k&&(c.push("pages"),d.resize=!0,null!=this.pages&&null!=this.currentPage&&(d.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),d.resize=!0);m&&c.push("layers");0<c.length&&(t&&c.push("lightbox"),d.toolbar=c.join(" "));null!=q&&0<q.length&&(d.edit=q);null!=a?d.url=a:d.xml=this.getFileData(!0,null,null,null,null,!k);b='<div class="mxgraph" style="'+(n?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":
 "")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(d))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";u(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,e){var d=document.createElement("div");
 d.style.whiteSpace="nowrap";var f=document.createElement("h3");mxUtils.write(f,mxResources.get("html"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";k.setAttribute("value","url");k.setAttribute("type","radio");k.setAttribute("name",
-"type-embedhtmldialog");f=k.cloneNode(!0);f.setAttribute("value","copy");l.appendChild(f);var n=document.createElement("span");mxUtils.write(n,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(n);mxUtils.br(l);l.appendChild(k);n=document.createElement("span");mxUtils.write(n,mxResources.get("publicDiagramUrl"));l.appendChild(n);var m=this.getCurrentFile();null==c&&null!=m&&m.constructor==window.DriveFile&&(n=document.createElement("a"),n.style.paddingLeft="12px",n.style.color="gray",n.setAttribute("href",
-"javascript:void(0);"),mxUtils.write(n,mxResources.get("share")),l.appendChild(n),mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(m.getId())})));f.setAttribute("checked","checked");null==c&&k.setAttribute("disabled","disabled");d.appendChild(l);var u=this.addLinkSection(d),q=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var r=document.createElement("input");r.setAttribute("type","text");r.style.marginRight="16px";
-r.style.width="60px";r.style.marginLeft="4px";r.style.marginRight="12px";r.value="100%";d.appendChild(r);var v=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,z=z=this.addCheckbox(d,mxResources.get("allPages"),l,!l),N=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),E=this.addEditButton(d,K),C=E.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"):
-C.setAttribute("disabled","disabled");C.checked&&K.checked?E.getEditSelect().removeAttribute("disabled"):E.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(k.checked?c:null,q.checked,r.value,u.getTarget(),u.getColor(),v.checked,z.checked,N.checked,K.checked,E.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,g,k){var d=document.createElement("div");d.style.whiteSpace=
-"nowrap";var f=document.createElement("h3");mxUtils.write(f,a||mxResources.get("link"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=this.getCurrentFile(),f="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=l&&l.constructor==window.DriveFile&&!b){a=80;var f="https://desk.draw.io/support/solutions/articles/16000039384",p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";
-var n=document.createElement("div");n.style.whiteSpace="normal";mxUtils.write(n,mxResources.get("linkAccountRequired"));p.appendChild(n);n=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));n.style.marginTop="12px";n.className="geBtn";p.appendChild(n);d.appendChild(p);n=document.createElement("a");n.style.paddingLeft="12px";n.style.color="gray";n.style.fontSize="11px";n.setAttribute("href","javascript:void(0);");mxUtils.write(n,mxResources.get("check"));
-p.appendChild(n);mxEvent.addListener(n,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,q=null;if(null!=c||null!=e)a+=30,mxUtils.write(d,mxResources.get("width")+":"),m=document.createElement("input"),
-m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",d.appendChild(m),mxUtils.write(d,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom="10px",q.value=e+"px",d.appendChild(q),mxUtils.br(d);var r=this.addLinkSection(d,k);c=null!=this.pages&&1<this.pages.length;var v=null;
-if(null==l||l.constructor!=window.DriveFile||b)v=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var z=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,z),E=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=E.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(z,"change",function(){z.checked?(C.removeAttribute("disabled"),E.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),E.setAttribute("disabled",
-"disabled"));E.checked&&z.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){g(r.getTarget(),r.getColor(),null==v?!0:v.checked,z.checked,K.getLink(),C.checked,null!=m?m.value:null,null!=q?q.value:null)}),null,mxResources.get("create"),f);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():
+"type-embedhtmldialog");f=k.cloneNode(!0);f.setAttribute("value","copy");l.appendChild(f);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(p);mxUtils.br(l);l.appendChild(k);p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));l.appendChild(p);var m=this.getCurrentFile();null==c&&null!=m&&m.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.setAttribute("href",
+"javascript:void(0);"),mxUtils.write(p,mxResources.get("share")),l.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(m.getId())})));f.setAttribute("checked","checked");null==c&&k.setAttribute("disabled","disabled");d.appendChild(l);var u=this.addLinkSection(d),q=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var r=document.createElement("input");r.setAttribute("type","text");r.style.marginRight="16px";
+r.style.width="60px";r.style.marginLeft="4px";r.style.marginRight="12px";r.value="100%";d.appendChild(r);var v=this.addCheckbox(d,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,z=z=this.addCheckbox(d,mxResources.get("allPages"),l,!l),N=this.addCheckbox(d,mxResources.get("layers"),!0),K=this.addCheckbox(d,mxResources.get("lightbox"),!0),F=this.addEditButton(d,K),C=F.getEditInput();C.style.marginBottom="16px";mxEvent.addListener(K,"change",function(){K.checked?C.removeAttribute("disabled"):
+C.setAttribute("disabled","disabled");C.checked&&K.checked?F.getEditSelect().removeAttribute("disabled"):F.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,d,mxUtils.bind(this,function(){e(k.checked?c:null,q.checked,r.value,u.getTarget(),u.getColor(),v.checked,z.checked,N.checked,K.checked,F.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);f.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,e,g,n){var d=document.createElement("div");d.style.whiteSpace=
+"nowrap";var f=document.createElement("h3");mxUtils.write(f,a||mxResources.get("link"));f.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(f);var l=this.getCurrentFile(),f="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=l&&l.constructor==window.DriveFile&&!b){a=80;var f="https://desk.draw.io/support/solutions/articles/16000039384",k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";
+var p=document.createElement("div");p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));k.appendChild(p);p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));p.style.marginTop="12px";p.className="geBtn";k.appendChild(p);d.appendChild(k);p=document.createElement("a");p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.setAttribute("href","javascript:void(0);");mxUtils.write(p,mxResources.get("check"));
+k.appendChild(p);mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,q=null;if(null!=c||null!=e)a+=30,mxUtils.write(d,mxResources.get("width")+":"),m=document.createElement("input"),
+m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",d.appendChild(m),mxUtils.write(d,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom="10px",q.value=e+"px",d.appendChild(q),mxUtils.br(d);var r=this.addLinkSection(d,n);c=null!=this.pages&&1<this.pages.length;var v=null;
+if(null==l||l.constructor!=window.DriveFile||b)v=this.addCheckbox(d,mxResources.get("allPages"),c,!c);var z=this.addCheckbox(d,mxResources.get("lightbox"),!0),K=this.addEditButton(d,z),F=K.getEditInput(),C=this.addCheckbox(d,mxResources.get("layers"),!0);C.style.marginLeft=F.style.marginLeft;C.style.marginBottom="16px";C.style.marginTop="8px";mxEvent.addListener(z,"change",function(){z.checked?(C.removeAttribute("disabled"),F.removeAttribute("disabled")):(C.setAttribute("disabled","disabled"),F.setAttribute("disabled",
+"disabled"));F.checked&&z.checked?K.getEditSelect().removeAttribute("disabled"):K.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){g(r.getTarget(),r.getColor(),null==v?!0:v.checked,z.checked,K.getLink(),C.checked,null!=m?m.value:null,null!=q?q.value:null)}),null,mxResources.get("create"),f);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():
 document.execCommand("selectAll",!1,null)):r.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,e){var d=document.createElement("div");d.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:4px";d.appendChild(f);var l=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),k=e?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),
-!0),f=this.editor.graph,n=e?null:this.addCheckbox(d,mxResources.get("transparentBackground"),f.background==mxConstants.NONE||null==f.background);null!=n&&(n.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!l.checked,null!=k?k.checked:!1,null!=n?n.checked:!1)}),null,a,b);this.showDialog(a.container,300,e?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,e,g,k,m,q){m=null!=m?m:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=
-this.editor.graph,l="jpeg"==q?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(p);mxUtils.write(d,mxResources.get("zoom")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px";n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="12px";n.value=this.lastExportZoom||"100%";d.appendChild(n);mxUtils.write(d,mxResources.get("borderWidth")+":");
-var x=document.createElement("input");x.setAttribute("type","text");x.style.marginRight="16px";x.style.width="60px";x.style.marginLeft="4px";x.value=this.lastExportBorder||"0";d.appendChild(x);mxUtils.br(d);var B=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=q),r=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),v=document.createElement("input");v.style.marginTop="16px";v.style.marginRight="8px";v.style.marginLeft="24px";v.setAttribute("disabled",
-"disabled");v.setAttribute("type","checkbox");k&&(d.appendChild(v),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=26,mxEvent.addListener(r,"change",function(){r.checked?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}));f.isSelectionEmpty()||(v.setAttribute("checked","checked"),v.defaultChecked=!0);var E=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type",
-"checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(d.appendChild(C),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),l+=26);var z=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),m,null,null,"jpeg"!=q),O=null!=this.pages&&1<this.pages.length,V=this.addCheckbox(d,O?mxResources.get("allPages"):"",O,!O,null,"jpeg"!=q);V.style.marginLeft="24px";V.style.marginBottom="16px";O||(V.style.display="none");mxEvent.addListener(z,"change",function(){z.checked&&
-O?V.removeAttribute("disabled"):V.setAttribute("disabled","disabled")});m&&O||V.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a);
-a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==q&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),l+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=x.value;this.lastExportZoom=n.value;g(n.value,B.checked,!r.checked,E.checked,z.checked,C.checked,x.value,v.checked,!V.checked,T.value)}),null,c,e);this.showDialog(c.container,340,
-l,!0,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,e,g){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var k=this.addCheckbox(d,mxResources.get("fit"),
-!0),n=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible&&e,!e),m=this.addCheckbox(d,c),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),r=this.addEditButton(d,q),v=r.getEditInput(),z=1<f.model.getChildCount(f.model.getRoot()),N=this.addCheckbox(d,mxResources.get("layers"),z,!z);N.style.marginLeft=v.style.marginLeft;N.style.marginBottom="12px";N.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(z&&N.removeAttribute("disabled"),v.removeAttribute("disabled")):
-(N.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&q.checked?r.getEditSelect().removeAttribute("disabled"):r.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(k.checked,n.checked,m.checked,q.checked,r.getLink(),N.checked)}),null,mxResources.get("embed"),g);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,g,k,m,q){function d(d){var b=" ",l="";e&&(b=" 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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",l+="cursor:pointer;");a&&(l+="max-width:100%;");var p="";c&&(p=' width="'+Math.round(f.width)+'" height="'+Math.round(f.height)+'"');m('<img src="'+d+'"'+p+(""!=l?' style="'+l+'"':"")+b+"/>")}var f=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=e?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null,
-mxUtils.bind(this,function(a){q({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),f.width*f.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var l="";c&&(l="&w="+Math.round(2*f.width)+"&h="+Math.round(2*f.height));var p=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+l+"&xml="+encodeURIComponent(b));p.send(mxUtils.bind(this,function(){200<=p.getStatus()&&299>=p.getStatus()?d("data:image/png;base64,"+p.getText()):q({message:mxResources.get("unknownError")})}))}else q({message:mxResources.get("drawingTooLarge")})};
-EditorUi.prototype.createEmbedSvg=function(a,b,c,e,g,k,m){var d=this.editor.graph.getSvg(),f=d.getElementsByTagName("a");if(null!=f)for(var l=0;l<f.length;l++){var p=f[l].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==f[l].getAttribute("target")&&f[l].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var n=" ",q="";e&&(n="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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",q+="cursor:pointer;");a&&(q+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){m('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=q?' style="'+q+'"':"")+n+"/>")}))}else q="",e&&(d.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('"+
+!0),f=this.editor.graph,p=e?null:this.addCheckbox(d,mxResources.get("transparentBackground"),f.background==mxConstants.NONE||null==f.background);null!=p&&(p.style.marginBottom="16px");a=new CustomDialog(this,d,mxUtils.bind(this,function(){c(!l.checked,null!=k?k.checked:!1,null!=p?p.checked:!1)}),null,a,b);this.showDialog(a.container,300,e?100:186,!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,e,g,n,k,m){k=null!=k?k:!0;var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=
+this.editor.graph,l="jpeg"==m?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(p);mxUtils.write(d,mxResources.get("zoom")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value=this.lastExportZoom||"100%";d.appendChild(q);mxUtils.write(d,mxResources.get("borderWidth")+":");
+var y=document.createElement("input");y.setAttribute("type","text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.value=this.lastExportBorder||"0";d.appendChild(y);mxUtils.br(d);var A=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=m),r=this.addCheckbox(d,mxResources.get("selectionOnly"),!1,f.isSelectionEmpty()),v=document.createElement("input");v.style.marginTop="16px";v.style.marginRight="8px";v.style.marginLeft="24px";v.setAttribute("disabled",
+"disabled");v.setAttribute("type","checkbox");n&&(d.appendChild(v),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),l+=26,mxEvent.addListener(r,"change",function(){r.checked?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}));f.isSelectionEmpty()||(v.setAttribute("checked","checked"),v.defaultChecked=!0);var F=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible),C=document.createElement("input");C.style.marginTop="16px";C.style.marginRight="8px";C.setAttribute("type",
+"checkbox");!this.isOffline()&&this.canvasSupported||C.setAttribute("disabled","disabled");b&&(d.appendChild(C),mxUtils.write(d,mxResources.get("embedImages")),mxUtils.br(d),l+=26);var z=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),k,null,null,"jpeg"!=m),O=null!=this.pages&&1<this.pages.length,V=this.addCheckbox(d,O?mxResources.get("allPages"):"",O,!O,null,"jpeg"!=m);V.style.marginLeft="24px";V.style.marginBottom="16px";O||(V.style.display="none");mxEvent.addListener(z,"change",function(){z.checked&&
+O?V.removeAttribute("disabled"):V.setAttribute("disabled","disabled")});k&&O||V.setAttribute("disabled","disabled");var T=document.createElement("select");T.style.maxWidth="260px";T.style.marginLeft="8px";T.style.marginRight="10px";T.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));T.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));T.appendChild(a);
+a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));T.appendChild(a);"svg"==m&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(T),mxUtils.br(d),mxUtils.br(d),l+=26);c=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=y.value;this.lastExportZoom=q.value;g(q.value,A.checked,!r.checked,F.checked,z.checked,C.checked,y.value,v.checked,!V.checked,T.value)}),null,c,e);this.showDialog(c.container,340,
+l,!0,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,e,g){var d=document.createElement("div");d.style.whiteSpace="nowrap";var f=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(l)}var k=this.addCheckbox(d,mxResources.get("fit"),
+!0),p=this.addCheckbox(d,mxResources.get("shadow"),f.shadowVisible&&e,!e),m=this.addCheckbox(d,c),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),r=this.addEditButton(d,q),v=r.getEditInput(),z=1<f.model.getChildCount(f.model.getRoot()),N=this.addCheckbox(d,mxResources.get("layers"),z,!z);N.style.marginLeft=v.style.marginLeft;N.style.marginBottom="12px";N.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(z&&N.removeAttribute("disabled"),v.removeAttribute("disabled")):
+(N.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&q.checked?r.getEditSelect().removeAttribute("disabled"):r.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,mxUtils.bind(this,function(){a(k.checked,p.checked,m.checked,q.checked,r.getLink(),N.checked)}),null,mxResources.get("embed"),g);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,e,g,k,m,q){function d(d){var b=" ",l="";e&&(b=" 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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",l+="cursor:pointer;");a&&(l+="max-width:100%;");var n="";c&&(n=' width="'+Math.round(f.width)+'" height="'+Math.round(f.height)+'"');m('<img src="'+d+'"'+n+(""!=l?' style="'+l+'"':"")+b+"/>")}var f=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=e?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");d(a)}),null,null,null,
+mxUtils.bind(this,function(a){q({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),f.width*f.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var l="";c&&(l="&w="+Math.round(2*f.width)+"&h="+Math.round(2*f.height));var n=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+l+"&xml="+encodeURIComponent(b));n.send(mxUtils.bind(this,function(){200<=n.getStatus()&&299>=n.getStatus()?d("data:image/png;base64,"+n.getText()):q({message:mxResources.get("unknownError")})}))}else q({message:mxResources.get("drawingTooLarge")})};
+EditorUi.prototype.createEmbedSvg=function(a,b,c,e,g,k,m){var d=this.editor.graph.getSvg(),f=d.getElementsByTagName("a");if(null!=f)for(var l=0;l<f.length;l++){var n=f[l].getAttribute("href");null!=n&&"#"==n.charAt(0)&&"_blank"==f[l].getAttribute("target")&&f[l].removeAttribute("target")}e&&d.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(d);if(c){var p=" ",q="";e&&(p="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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",q+="cursor:pointer;");a&&(q+="max-width:100%;");this.convertImages(d,mxUtils.bind(this,function(a){m('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=q?' style="'+q+'"':"")+p+"/>")}))}else q="",e&&(d.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.drawHost+"/?client=1&lightbox=1"+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),q+="cursor:pointer;"),a&&(a=parseInt(d.getAttribute("width")),b=parseInt(d.getAttribute("height")),d.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),q+="max-width:100%;max-height:"+b+"px;",d.removeAttribute("height")),""!=q&&d.setAttribute("style",q),m(mxUtils.getXml(d))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date-a)/1E3);var d=Math.floor(a/31536E3);if(1<d)return d+" "+mxResources.get("years");
 d=Math.floor(a/2592E3);if(1<d)return d+" "+mxResources.get("months");d=Math.floor(a/86400);if(1<d)return d+" "+mxResources.get("days");d=Math.floor(a/3600);if(1<d)return d+" "+mxResources.get("hours");d=Math.floor(a/60);return 1<d?d+" "+mxResources.get("minutes"):1==d?d+" "+mxResources.get("minute"):null};EditorUi.prototype.convertMath=function(a,b,c,e){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,
 function(){e()}))}),0)):e()};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var d=null;if("diagram"==a.nodeName)d=a;else if("mxfile"==a.nodeName){var c=a.getElementsByTagName("diagram");if(0<c.length){var d=c[0],e=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:e.apply(this,arguments)}}}null!=d&&(c=b.decompress(mxUtils.getTextContent(d)),null!=c&&0<c.length&&(a=mxUtils.parseXml(c).documentElement))}c=
-this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(p){}finally{this.editor.graph=c}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,e=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),e=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()),
-f=d.getGlobalVariable,l=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(l.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==e&&(e=this.getFileData(!0));var f=c.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"zTXt","mxGraphModel",atob(this.editor.graph.compress(e)));a(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(y){null!=
-b&&b(y)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,e,g,k,m){m=b.background;m==mxConstants.NONE&&(m=null);k=b.getSvg(m,null,null,null,null,k);b.shadowVisible&&b.addSvgShadow(k);null!=a&&k.setAttribute("content",a);null!=c&&k.setAttribute("resource",c);if(null!=g)this.convertImages(k,mxUtils.bind(this,function(a){g((e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
+this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(n){}finally{this.editor.graph=c}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){var d=this.editor.graph,e=null;if(null!=c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),e=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()),
+f=d.getGlobalVariable,l=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(l.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==e&&(e=this.getFileData(!0));var f=c.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"zTXt","mxGraphModel",atob(this.editor.graph.compress(e)));a(f.substring(f.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(x){null!=
+b&&b(x)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,e,g,k,m){m=b.background;m==mxConstants.NONE&&(m=null);k=b.getSvg(m,null,null,null,null,k);b.shadowVisible&&b.addSvgShadow(k);null!=a&&k.setAttribute("content",a);null!=c&&k.setAttribute("resource",c);if(null!=g)this.convertImages(k,mxUtils.bind(this,function(a){g((e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
 mxUtils.getXml(a))}));else return(e?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(k)};EditorUi.prototype.exportImage=function(a,b,c,e,g,k,m,q,t){t=null!=t?t:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();c=null!=c?c:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();
-try{this.saveCanvas(a,g?this.getFileData(!0,null,null,null,c,q):null,t)}catch(A){"Invalid image"==A.message?this.downloadFile(t):this.handleError(A)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,m)}catch(u){this.spinner.stop(),this.handleError(u)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var d=function(a){return a.replace(RegExp("^[\\s\"']+","g"),
+try{this.saveCanvas(a,g?this.getFileData(!0,null,null,null,c,q):null,t)}catch(D){"Invalid image"==D.message?this.downloadFile(t):this.handleError(D)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,e,null,null,k,m)}catch(u){this.spinner.stop(),this.handleError(u)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var d=function(a){return a.replace(RegExp("^[\\s\"']+","g"),
 "").replace(RegExp("[\\s\"']+$","g"),"")},b=this.editor.fontCss.split("url("),c=0,e={},k=mxUtils.bind(this,function(){if(0==c){for(var f=[b[0]],g=1;g<b.length;g++){var l=b[g].indexOf(")");f.push('url("');f.push(e[d(b[g].substring(0,l))]);f.push('"'+b[g].substring(l))}this.editor.resolvedFontCss=f.join("");a()}});if(0<b.length)for(var m=1;m<b.length;m++){var q=b[m].indexOf(")"),t=null,r=b[m].indexOf("format(",q);0<r&&(t=d(b[m].substring(r+7,b[m].indexOf(")",r))));mxUtils.bind(this,function(a){if(null==
 e[a]){e[a]=a;c++;var d="application/x-font-ttf";if("svg"==t||/(\.svg)($|\?)/i.test(a))d="image/svg+xml";else if("otf"==t||"embedded-opentype"==t||/(\.otf)($|\?)/i.test(a))d="application/x-font-opentype";else if("woff"==t||/(\.woff)($|\?)/i.test(a))d="application/font-woff";else if("woff2"==t||/(\.woff2)($|\?)/i.test(a))d="application/font-woff2";else if("eot"==t||/(\.eot)($|\?)/i.test(a))d="application/vnd.ms-fontobject";else if("sfnt"==t||/(\.sfnt)($|\?)/i.test(a))d="application/font-sfnt";var b=
-a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(d){e[a]=d;c--;k()}),mxUtils.bind(this,function(a){c--;k()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(d(b[m].substring(0,q)),t)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,g,k,m,q,t,r,u,A,D,v){k=null!=k?k:!0;A=null!=A?A:this.editor.graph;D=null!=D?D:0;var d=t?null:A.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==t&&
-(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(A.getSvg(d,null,null,v,null,null!=m?m:!0,null,null,null,r),mxUtils.bind(this,function(c){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=document.createElement("canvas"),l=parseInt(c.getAttribute("width")),p=parseInt(c.getAttribute("height"));q=null!=q?q:1;null!=b&&(q=k?Math.min(1,Math.min(3*b/(4*p),b/l)):b/l);l=Math.ceil(q*l)+2*D;p=Math.ceil(q*p)+2*D;f.setAttribute("width",l);f.setAttribute("height",p);var n=f.getContext("2d");
-null!=d&&(n.beginPath(),n.rect(0,0,l,p),n.fillStyle=d,n.fill());n.scale(q,q);mxClient.IS_SF?window.setTimeout(function(){n.drawImage(e,D/q,D/q);a(f)},0):(n.drawImage(e,D/q,D/q),a(f))}catch(T){null!=g&&g(T)}});e.onerror=function(a){null!=g&&g(a)};try{r&&this.editor.graph.addSvgShadow(c);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(A,
+a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(d){e[a]=d;c--;k()}),mxUtils.bind(this,function(a){c--;k()}),!0,null,"data:"+d+";charset=utf-8;base64,")}})(d(b[m].substring(0,q)),t)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,e,g,k,m,q,t,r,u,D,B,v){k=null!=k?k:!0;D=null!=D?D:this.editor.graph;B=null!=B?B:0;var d=t?null:D.background;d==mxConstants.NONE&&(d=null);null==d&&(d=e);null==d&&0==t&&
+(d=this.editor.graph.defaultPageBackgroundColor);this.convertImages(D.getSvg(d,null,null,v,null,null!=m?m:!0,null,null,null,r),mxUtils.bind(this,function(c){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=document.createElement("canvas"),l=parseInt(c.getAttribute("width")),n=parseInt(c.getAttribute("height"));q=null!=q?q:1;null!=b&&(q=k?Math.min(1,Math.min(3*b/(4*n),b/l)):b/l);l=Math.ceil(q*l)+2*B;n=Math.ceil(q*n)+2*B;f.setAttribute("width",l);f.setAttribute("height",n);var p=f.getContext("2d");
+null!=d&&(p.beginPath(),p.rect(0,0,l,n),p.fillStyle=d,p.fill());p.scale(q,q);mxClient.IS_SF?window.setTimeout(function(){p.drawImage(e,B/q,B/q);a(f)},0):(p.drawImage(e,B/q,B/q),a(f))}catch(T){null!=g&&g(T)}});e.onerror=function(a){null!=g&&g(a)};try{r&&this.editor.graph.addSvgShadow(c);var f=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(D,
 c,!0,mxUtils.bind(this,function(){e.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(f)}catch(C){null!=g&&g(C)}}),c,u)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var e="http://"==d.substring(0,7)||"https://"==d.substring(0,8);e&&!navigator.onLine?d=c.svgBrokenImage.src:!e||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(d)?"chrome-extension://"!=
 d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,e){null==e&&(e=this.createImageUrlConverter());var d=0,f=c||{};c=mxUtils.bind(this,function(c,g){for(var l=a.getElementsByTagName(c),k=0;k<l.length;k++)mxUtils.bind(this,function(c){var l=e.convert(c.getAttribute(g));if(null!=l&&"data:"!=l.substring(0,5)){var k=f[l];null==k?(d++,this.convertImageToDataUri(l,function(e){null!=e&&(f[l]=e,c.setAttribute(g,
 e));d--;0==d&&b(a)})):c.setAttribute(g,k)}else null!=l&&c.setAttribute(g,l)})(l[k])});c("image","xlink:href");c("img","src");0==d&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,e,g,k){try{var d=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);g=null!=g?g:!0;var f=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var e=a.getText();if(d){if((9==document.documentMode||10==document.documentMode)&&
 "undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),f=0;f<a.length;f++)e[f]=String.fromCharCode(a[f]);e=e.join("")}k=null!=k?k:"data:image/png;base64,";e=k+this.base64Encode(e)}b(e)}}else null!=c&&c({code:App.ERROR_UNKNOWN},a)}),function(){null!=c&&c({code:App.ERROR_UNKNOWN})},d,this.timeout,function(){g&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:f})})});f()}catch(t){null!=c&&c(t)}};EditorUi.prototype.isCorsEnabledForUrl=
 function(a){null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)||"https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};EditorUi.prototype.convertImageToDataUri=
-function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var d=new Image,c=this;this.crossOriginImages&&(d.crossOrigin="anonymous");d.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=d.height;a.width=d.width;e.drawImage(d,0,0);try{b(a.toDataURL())}catch(B){b(c.svgBrokenImage.src)}};d.onerror=function(){b(c.svgBrokenImage.src)};d.src=a}};EditorUi.prototype.importXml=
-function(a,b,c,e,g){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var f=this.editor.graph;if(null!=a&&0<a.length){var l=mxUtils.parseXml(a),k=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var n=k.getElementsByTagName("diagram");if(1==n.length)k=mxUtils.parseXml(f.decompress(mxUtils.getTextContent(n[0]))).documentElement;else if(1<n.length){f.model.beginUpdate();try{for(a=0;a<n.length;a++){n[a].removeAttribute("id");var m=this.updatePageRoot(new DiagramPage(n[a])),
-q=this.pages.length;null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,m,m,q))}}finally{f.model.endUpdate()}}}null!=k&&"mxGraphModel"===k.nodeName&&(d=f.importGraphModel(k,b,c,e))}}catch(D){if(g)throw D;this.handleError(D)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,e){e=null!=e?e:a.name;c=null!=c?c:mxUtils.bind(this,
-function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(e)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,e);var f=new XMLHttpRequest;f.open("POST",VSD_CONVERT_URL);f.responseType="blob";f.onreadystatechange=mxUtils.bind(this,function(){if(4==f.readyState)if(200<=f.status&&299>=f.status)try{f.response.name=e,this.doImportVisio(f.response,b,c)}catch(x){c(x)}else c({})});f.send(d)}else try{this.doImportVisio(a,
-b,c)}catch(x){c(x)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(g){c(g)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
+function(a,b){if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){b(this.createSvgDataUri(a.getText()))}),function(){b(this.svgBrokenImage.src)});else{var d=new Image,c=this;this.crossOriginImages&&(d.crossOrigin="anonymous");d.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=d.height;a.width=d.width;e.drawImage(d,0,0);try{b(a.toDataURL())}catch(A){b(c.svgBrokenImage.src)}};d.onerror=function(){b(c.svgBrokenImage.src)};d.src=a}};EditorUi.prototype.importXml=
+function(a,b,c,e,g){b=null!=b?b:0;c=null!=c?c:0;var d=[];try{var f=this.editor.graph;if(null!=a&&0<a.length){var l=mxUtils.parseXml(a),k=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var p=k.getElementsByTagName("diagram");if(1==p.length)k=mxUtils.parseXml(f.decompress(mxUtils.getTextContent(p[0]))).documentElement;else if(1<p.length){f.model.beginUpdate();try{for(a=0;a<p.length;a++){p[a].removeAttribute("id");var m=this.updatePageRoot(new DiagramPage(p[a])),
+q=this.pages.length;null==m.getName()&&m.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,m,m,q))}}finally{f.model.endUpdate()}}}null!=k&&"mxGraphModel"===k.nodeName&&(d=f.importGraphModel(k,b,c,e))}}catch(B){if(g)throw B;this.handleError(B)}return d};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,e){e=null!=e?e:a.name;c=null!=c?c:mxUtils.bind(this,
+function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(e)&&null!=VSD_CONVERT_URL){var d=new FormData;d.append("file1",a,e);var f=new XMLHttpRequest;f.open("POST",VSD_CONVERT_URL);f.responseType="blob";f.onreadystatechange=mxUtils.bind(this,function(){if(4==f.readyState)if(200<=f.status&&299>=f.status)try{f.response.name=e,this.doImportVisio(f.response,b,c)}catch(y){c(y)}else c({})});f.send(d)}else try{this.doImportVisio(a,
+b,c)}catch(y){c(y)}});this.doImportVisio||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(g){c(g)}});this.doImportGraphML||this.loadingExtensions||this.isOffline()?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
 d))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(f){this.handleError(f)}});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline()?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,c){var d=mxUtils.bind(this,
 function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{b(LucidImporter.importState(JSON.parse(a)))}catch(g){c(g)}else c({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline()?window.setTimeout(d,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",d):mxscript("js/extensions.min.js",d))};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph,
 e=null;d.getModel().beginUpdate();try{e=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=center;verticalAlign=middle;"),d.updateCellSize(e,!0)}finally{d.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(a,b,c,e,g,k,m){k=null!=k?k:!0;m=null!=m?m:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this,
@@ -3069,44 +3074,44 @@ function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary
 a+";")])):/(\.*<graphml )/.test(a)?(d=!0,this.importGraphML(a,l)):null!=t&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(d=!0,this.importVisio(t,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(d=!0,this.parseFile(null!=t?t:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?l(a.responseText):null!=q&&q(null))}),m)):/(\.v(sd|dx))($|\?)/i.test(m)||/(\.vs(s|x))($|\?)/i.test(m)||
 (f=this.insertTextAt(this.validateFileData(a),c,e,!0,null,r));d||null==q||q(f);return f};EditorUi.prototype.base64Encode=function(a){for(var b="",d=0,c=a.length,e,k,m;d<c;){e=a.charCodeAt(d++)&255;if(d==c){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4);b+="==";break}k=a.charCodeAt(d++);if(d==c){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);
 b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);b+="=";break}m=a.charCodeAt(d++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(m&192)>>6);b+=
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,g,k,m,q,t,r,u,A){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;r=null!=r?r:this.maxImageBytes;var d=null!=b&&null!=c,f=!0,l=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var p=u||this.resampleThreshold,n=0;n<a.length;n++)if("image/"==a[n].type.substring(0,6)&&a[n].size>p){l=!0;break}var x=mxUtils.bind(this,function(){var l=this.editor.graph,p=l.gridSize;
-g=null!=g?g:mxUtils.bind(this,function(a,b,c,e,f,g,l,k,p){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,e,f,g,l,k,p,d,A)});k=null!=k?k:mxUtils.bind(this,function(a){l.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var n=a.length,t=n,x=[],B=mxUtils.bind(this,function(a,b){x[a]=b;if(0==--t){this.spinner.stop();if(null!=q)q(x);else{var d=[];l.getModel().beginUpdate();
-try{for(var c=0;c<x.length;c++){var e=x[c]();null!=e&&(d=d.concat(e))}}finally{l.getModel().endUpdate()}}k(d)}}),E=0;E<n;E++)mxUtils.bind(this,function(d){var k=a[d];if(null!=k){var n=new FileReader;n.onload=mxUtils.bind(this,function(a){if(null==m||m(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var n=a.target.result,q=n.indexOf(","),t=decodeURIComponent(escape(atob(n.substring(q+1)))),x=mxUtils.parseXml(t),t=x.getElementsByTagName("svg");if(0<t.length){var t=t[0],
-E=A?null:t.getAttribute("content");null!=E&&"<"!=E.charAt(0)&&"%"!=E.charAt(0)&&(E=unescape(window.atob?atob(E):Base64.decode(E,!0)));null!=E&&"%"==E.charAt(0)&&(E=decodeURIComponent(E));null==E||"<mxfile "!==E.substring(0,8)&&"<mxGraphModel "!==E.substring(0,14)?B(d,mxUtils.bind(this,function(){try{if(n.substring(0,q+1),null!=x){var a=x.getElementsByTagName("svg");if(0<a.length){var f=a[0],m=parseFloat(f.getAttribute("width")),t=parseFloat(f.getAttribute("height")),u=f.getAttribute("viewBox");if(null==
-u||0==u.length)f.setAttribute("viewBox","0 0 "+m+" "+t);else if(isNaN(m)||isNaN(t)){var r=u.split(" ");3<r.length&&(m=parseFloat(r[2]),t=parseFloat(r[3]))}n=this.createSvgDataUri(mxUtils.getXml(f));var E=Math.min(1,Math.min(e/Math.max(1,m)),e/Math.max(1,t)),B=g(n,k.type,b+d*p,c+d*p,Math.max(1,Math.round(m*E)),Math.max(1,Math.round(t*E)),k.name);if(isNaN(m)||isNaN(t)){var A=new Image;A.onload=mxUtils.bind(this,function(){m=Math.max(1,A.width);t=Math.max(1,A.height);B[0].geometry.width=m;B[0].geometry.height=
-t;f.setAttribute("viewBox","0 0 "+m+" "+t);n=this.createSvgDataUri(mxUtils.getXml(f));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));l.setCellStyles("image",n,[B[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(f))}return B}}}catch(ua){}return null})):B(d,mxUtils.bind(this,function(){return g(E,"text/xml",b+d*p,c+d*p,0,0,k.name)}))}else B(d,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==k.type){var C=A?null:this.extractGraphModelFromPng(a.target.result);
-if(null!=C&&0<C.length){var y=new Image;y.src=a.target.result;B(d,mxUtils.bind(this,function(){return g(C,"text/xml",b+d*p,c+d*p,y.width,y.height,k.name)}));t=!0}}t||(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(a.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,
-a.target.result,mxUtils.bind(this,function(l,n,m){B(d,mxUtils.bind(this,function(){if(null!=l&&l.length<r){var q=f&&this.isResampleImage(a.target.result,u)?Math.min(1,Math.min(e/n,e/m)):1;return g(l,k.type,b+d*p,c+d*p,Math.round(n*q),Math.round(m*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),f,e,u)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else g(a.target.result,k.type,b+d*p,c+d*p,240,160,k.name,
-function(a){B(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,b+d*p,c+d*p,240,160,k.name,function(a){B(d,function(){return a})},k):"image"==k.type.substring(0,5)?n.readAsDataURL(k):n.readAsText(k)}})(E)});l?this.confirmImageResize(function(a){f=a;x()},t):x()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},c=isLocalStorage||mxClient.IS_CHROMEAPP?
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,e,g,k,m,q,t,r,u,D){b=null!=b?b:0;c=null!=c?c:0;e=null!=e?e:this.maxImageSize;r=null!=r?r:this.maxImageBytes;var d=null!=b&&null!=c,f=!0,l=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=u||this.resampleThreshold,p=0;p<a.length;p++)if("image/"==a[p].type.substring(0,6)&&a[p].size>n){l=!0;break}var A=mxUtils.bind(this,function(){var l=this.editor.graph,n=l.gridSize;
+g=null!=g?g:mxUtils.bind(this,function(a,b,c,e,f,g,l,k,n){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,e,f,g,l,k,n,d,D)});k=null!=k?k:mxUtils.bind(this,function(a){l.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=a.length,t=p,A=[],y=mxUtils.bind(this,function(a,b){A[a]=b;if(0==--t){this.spinner.stop();if(null!=q)q(A);else{var d=[];l.getModel().beginUpdate();
+try{for(var c=0;c<A.length;c++){var e=A[c]();null!=e&&(d=d.concat(e))}}finally{l.getModel().endUpdate()}}k(d)}}),F=0;F<p;F++)mxUtils.bind(this,function(d){var k=a[d];if(null!=k){var p=new FileReader;p.onload=mxUtils.bind(this,function(a){if(null==m||m(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var p=a.target.result,q=p.indexOf(","),t=decodeURIComponent(escape(atob(p.substring(q+1)))),A=mxUtils.parseXml(t),t=A.getElementsByTagName("svg");if(0<t.length){var t=t[0],
+F=D?null:t.getAttribute("content");null!=F&&"<"!=F.charAt(0)&&"%"!=F.charAt(0)&&(F=unescape(window.atob?atob(F):Base64.decode(F,!0)));null!=F&&"%"==F.charAt(0)&&(F=decodeURIComponent(F));null==F||"<mxfile "!==F.substring(0,8)&&"<mxGraphModel "!==F.substring(0,14)?y(d,mxUtils.bind(this,function(){try{if(p.substring(0,q+1),null!=A){var a=A.getElementsByTagName("svg");if(0<a.length){var f=a[0],m=parseFloat(f.getAttribute("width")),t=parseFloat(f.getAttribute("height")),u=f.getAttribute("viewBox");if(null==
+u||0==u.length)f.setAttribute("viewBox","0 0 "+m+" "+t);else if(isNaN(m)||isNaN(t)){var r=u.split(" ");3<r.length&&(m=parseFloat(r[2]),t=parseFloat(r[3]))}p=this.createSvgDataUri(mxUtils.getXml(f));var F=Math.min(1,Math.min(e/Math.max(1,m)),e/Math.max(1,t)),y=g(p,k.type,b+d*n,c+d*n,Math.max(1,Math.round(m*F)),Math.max(1,Math.round(t*F)),k.name);if(isNaN(m)||isNaN(t)){var x=new Image;x.onload=mxUtils.bind(this,function(){m=Math.max(1,x.width);t=Math.max(1,x.height);y[0].geometry.width=m;y[0].geometry.height=
+t;f.setAttribute("viewBox","0 0 "+m+" "+t);p=this.createSvgDataUri(mxUtils.getXml(f));var a=p.indexOf(";");0<a&&(p=p.substring(0,a)+p.substring(p.indexOf(",",a+1)));l.setCellStyles("image",p,[y[0]])});x.src=this.createSvgDataUri(mxUtils.getXml(f))}return y}}}catch(ua){}return null})):y(d,mxUtils.bind(this,function(){return g(F,"text/xml",b+d*n,c+d*n,0,0,k.name)}))}else y(d,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==k.type){var x=D?null:this.extractGraphModelFromPng(a.target.result);
+if(null!=x&&0<x.length){var C=new Image;C.src=a.target.result;y(d,mxUtils.bind(this,function(){return g(x,"text/xml",b+d*n,c+d*n,C.width,C.height,k.name)}));t=!0}}t||(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(a.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,
+a.target.result,mxUtils.bind(this,function(l,m,p){y(d,mxUtils.bind(this,function(){if(null!=l&&l.length<r){var q=f&&this.isResampleImage(a.target.result,u)?Math.min(1,Math.min(e/m,e/p)):1;return g(l,k.type,b+d*n,c+d*n,Math.round(m*q),Math.round(p*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),f,e,u)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else g(a.target.result,k.type,b+d*n,c+d*n,240,160,k.name,
+function(a){y(d,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,b+d*n,c+d*n,240,160,k.name,function(a){y(d,function(){return a})},k):"image"==k.type.substring(0,5)?p.readAsDataURL(k):p.readAsText(k)}})(F)});l?this.confirmImageResize(function(a){f=a;A()},t):A()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},c=isLocalStorage||mxClient.IS_CHROMEAPP?
 mxSettings.getResizeImages():null,e=function(c,e){if(c||b)mxSettings.setResizeImages(c?e:null),mxSettings.save();d();a(e)};null==c||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){e(a,!0)},function(a){e(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||
 mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,c)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var e=new XMLHttpRequest;e.open("POST",OPEN_URL);e.onreadystatechange=function(){b(e)};e.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,e,g,k){g=null!=g?g:this.maxImageSize;var d=Math.max(1,a.width),f=Math.max(1,a.height);
-if(e&&this.isResampleImage(b,k))try{var l=Math.max(d/g,f/g);if(1<l){var p=Math.round(d/l),n=Math.round(f/l),m=document.createElement("canvas");m.width=p;m.height=n;m.getContext("2d").drawImage(a,0,0,p,n);var q=m.toDataURL();if(q.length<b.length){var r=document.createElement("canvas");r.width=p;r.height=n;var v=r.toDataURL();q!==v&&(b=q,d=p,f=n)}}}catch(N){}c(b,d,f)};EditorUi.prototype.crcTable=[];for(var c=0;256>c;c++)for(var k=c,m=0;8>m;m++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[c]=
+if(e&&this.isResampleImage(b,k))try{var l=Math.max(d/g,f/g);if(1<l){var n=Math.round(d/l),m=Math.round(f/l),p=document.createElement("canvas");p.width=n;p.height=m;p.getContext("2d").drawImage(a,0,0,n,m);var q=p.toDataURL();if(q.length<b.length){var r=document.createElement("canvas");r.width=n;r.height=m;var v=r.toDataURL();q!==v&&(b=q,d=n,f=m)}}}catch(N){}c(b,d,f)};EditorUi.prototype.crcTable=[];for(var c=0;256>c;c++)for(var k=c,m=0;8>m;m++)k=1==(k&1)?3988292384^k>>>1:k>>>1,EditorUi.prototype.crcTable[c]=
 k;EditorUi.prototype.updateCRC=function(a,b,c,e){for(var d=0;d<e;d++)a=EditorUi.prototype.crcTable[(a^b[c+d])&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,d=0;d<a.length;d++)b=b>>>8^this.crcTable[(b^a.charCodeAt(d))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,e,g){function d(a,b){var d=k;k+=b;return a.substring(d,k)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<
-16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=g&&g();else if(d(a,4),"IHDR"!=d(a,4))null!=g&&g();else{d(a,17);g=a.substring(0,k);do{var n=f(a);if("IDAT"==d(a,4)){g=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+e;e=4294967295;e=this.updateCRC(e,
-b,0,4);e=this.updateCRC(e,c,0,c.length);g+=l(c.length)+b+c+l(e^4294967295);g+=a.substring(k-8,a.length);break}g+=a.substring(k-8,k-4+n);d(a,n);d(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(g):Base64.encode(g,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var d=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(d):Base64.decode(d,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,d,e){a=c.substring(a+8,a+8+e);"zTXt"==d?(e=a.indexOf(String.fromCharCode(0)),
+16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=g&&g();else if(d(a,4),"IHDR"!=d(a,4))null!=g&&g();else{d(a,17);g=a.substring(0,k);do{var m=f(a);if("IDAT"==d(a,4)){g=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+e;e=4294967295;e=this.updateCRC(e,
+b,0,4);e=this.updateCRC(e,c,0,c.length);g+=l(c.length)+b+c+l(e^4294967295);g+=a.substring(k-8,a.length);break}g+=a.substring(k-8,k-4+m);d(a,m);d(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(g):Base64.encode(g,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){var b=null;try{var d=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(d):Base64.decode(d,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,d,e){a=c.substring(a+8,a+8+e);"zTXt"==d?(e=a.indexOf(String.fromCharCode(0)),
 "mxGraphModel"==a.substring(0,e)&&(a=this.editor.graph.bytesToString(pako.inflateRaw(a.substring(e+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==d&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==d)return!0}))}catch(g){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};EditorUi.prototype.loadImage=function(a,b,c){var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror=
 c);d.src=a};var q=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var d=!1;try{a.handleCustomLink(b),d=!0}catch(C){a.handleError(C)}return d};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this,
 arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var e=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var d=0;d<a.pages.length;d++)if(a.pages[d]==a.currentPage){0<d&&(b+=(0<b.length?"&":"?")+"page="+d);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return e.apply(this,arguments)};
 var g=b.addClickHandler;b.addClickHandler=function(a,d,c){var e=d;d=function(a,d){if(null==d){var c=mxEvent.getSource(a);"a"==c.nodeName.toLowerCase()&&(d=c.getAttribute("href"))}null!=d&&b.isCustomLink(d)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(d)&&mxEvent.consume(a);null!=e&&e(a,d)};g.call(this,a,d,c)};q.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,
 360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var k=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:k.apply(this,arguments)};var m=b.labelLinkClicked;b.labelLinkClicked=function(a,d,c){var e=d.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(c)&&mxEvent.isPopupTrigger(c))m.apply(this,
-arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(c)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,d=a.getCurrentFile();null!=d&&(b=null!=d.getTitle()?d.getTitle():b);return b};var r=this.actions.get("print");r.setEnabled(!mxClient.IS_IOS||!navigator.standalone);r.visible=r.isEnabled();if(!this.editor.chromeless||this.editor.editable){var t=function(){window.setTimeout(function(){y.innerHTML="&nbsp;";
-y.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");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);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE||
+arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(c)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,d=a.getCurrentFile();null!=d&&(b=null!=d.getTitle()?d.getTitle():b);return b};var r=this.actions.get("print");r.setEnabled(!mxClient.IS_IOS||!navigator.standalone);r.visible=r.isEnabled();if(!this.editor.chromeless||this.editor.editable){var t=function(){window.setTimeout(function(){x.innerHTML="&nbsp;";
+x.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");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);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE||
 b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var d=a.clipboardData||a.originalEvent.clipboardData,c=!1,e=0;e<d.types.length;e++)if("text/"===d.types[e].substring(0,5)){c=!0;break}if(!c){var f=d.items;for(index in f){var g=f[index];if("file"===g.kind){if(b.isEditing())this.importFiles([g.getAsFile()],0,0,this.maxImageSize,function(a,d,c,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0,
-6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(J){}}),!1);var y=document.createElement("div");y.style.position="absolute";y.style.whiteSpace="nowrap";y.style.overflow="hidden";y.style.display="block";y.contentEditable=!0;mxUtils.setOpacity(y,0);y.style.width="1px";y.style.height="1px";y.innerHTML="&nbsp;";var u=!1;this.keyHandler.bindControlKey(88,null);
-this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var d=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(y.style.left=b.container.scrollLeft+10+"px",y.style.top=b.container.scrollTop+10+"px",b.container.appendChild(y),
-u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){y.focus();document.execCommand("selectAll",!1,null)},0):(y.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var d=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=d&&17!=d&&91!=d||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),y.parentNode.removeChild(y),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(y,
-"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(y),t())}));mxEvent.addListener(y,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(y,!0),t())}));mxEvent.addListener(y,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(y.innerHTML="&nbsp;",y.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,y);y.innerHTML="&nbsp;"}),0))}),!0);var A=this.isSelectionAllowed;this.isSelectionAllowed=
-function(a){return mxEvent.getSource(a)==y?!0:A.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,d=b.cellEditor.text2,c=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()}),
+6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(J){}}),!1);var x=document.createElement("div");x.style.position="absolute";x.style.whiteSpace="nowrap";x.style.overflow="hidden";x.style.display="block";x.contentEditable=!0;mxUtils.setOpacity(x,0);x.style.width="1px";x.style.height="1px";x.innerHTML="&nbsp;";var u=!1;this.keyHandler.bindControlKey(88,null);
+this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var d=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==d.nodeName||"TEXTAREA"==d.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||u||(x.style.left=b.container.scrollLeft+10+"px",x.style.top=b.container.scrollTop+10+"px",b.container.appendChild(x),
+u=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){x.focus();document.execCommand("selectAll",!1,null)},0):(x.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var d=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!u||224!=d&&17!=d&&91!=d||(u=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),x.parentNode.removeChild(x),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(x,
+"copy",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(x),t())}));mxEvent.addListener(x,"cut",mxUtils.bind(this,function(a){b.isEnabled()&&(mxClipboard.copy(b),this.copyCells(x,!0),t())}));mxEvent.addListener(x,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(x.innerHTML="&nbsp;",x.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,x);x.innerHTML="&nbsp;"}),0))}),!0);var D=this.isSelectionAllowed;this.isSelectionAllowed=
+function(a){return mxEvent.getSource(a)==x?!0:D.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,d=b.cellEditor.text2,c=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()}),
 mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(a){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=this.highlightElement(d));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,d,c,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=
 0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var d=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,c)),e/Math.max(1,a));b.insertImage(decodeURIComponent(d),c*e,a*e)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<=
 mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){r=document.createElement("div");r.style.position="absolute";r.style.top="95px";r.style.left="250px";r.style.width="2000px";r.style.height="30px";r.style.background=
-"whiteSmoke";document.body.appendChild(r);var D=document.createElement("div");D.style.position="absolute";D.style.top="125px";D.style.left="220px";D.style.width="30px";D.style.height="1000px";D.style.background="whiteSmoke";document.body.appendChild(D);var v=document.createElement("div");v.style.position="absolute";v.style.top="95px";v.style.left="220px";v.style.width="30px";v.style.height="30px";v.style.background="whiteSmoke";document.body.appendChild(v);this.vRuler=new mxRuler(this.editor.graph,
-D,!0);this.hRuler=new mxRuler(this.editor.graph,r,!1)}if("1"==urlParams.styledev){r=document.getElementById("geFooter");null!=r&&(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,
+"whiteSmoke";document.body.appendChild(r);var B=document.createElement("div");B.style.position="absolute";B.style.top="125px";B.style.left="220px";B.style.width="30px";B.style.height="1000px";B.style.background="whiteSmoke";document.body.appendChild(B);var v=document.createElement("div");v.style.position="absolute";v.style.top="95px";v.style.left="220px";v.style.width="30px";v.style.height="30px";v.style.background="whiteSmoke";document.body.appendChild(v);this.vRuler=new mxRuler(this.editor.graph,
+B,!0);this.hRuler=new mxRuler(this.editor.graph,r,!1)}if("1"==urlParams.styledev){r=document.getElementById("geFooter");null!=r&&(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)})),r.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var d=this.editor.graph.getSelectionCell(),d=this.editor.graph.getModel().getStyle(d);this.styleInput.value=d||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var z=this.isSelectionAllowed;
 this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:z.apply(this,arguments)}}r=document.getElementById("geInfo");null!=r&&r.parentNode.removeChild(r);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var N=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=N&&(N.parentNode.removeChild(N),N=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==
 N&&(!mxClient.IS_IE||10<document.documentMode)&&(N=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=N&&(N.parentNode.removeChild(N),N=null);if(b.isEnabled()){var d=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),c=b.view.translate,e=b.view.scale,f=d.x/e-c.x,g=d.y/e-c.y;mxEvent.isAltDown(a)&&(g=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,
-f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=d)b.setSelectionCells(this.importXml(d,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=k;var p=null,c=d.getElementsByTagName("img");
-null!=c&&1==c.length?(k=c[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(p=!0)):(d=d.getElementsByTagName("a"),null!=d&&1==d.length&&(k=d[0].getAttribute("href")));var n=!0,m=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,g,!0,p,null,n))});p&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;m()},mxEvent.isControlDown(a)):m()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,
+f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var l=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=d)b.setSelectionCells(this.importXml(d,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=k;var n=null,c=d.getElementsByTagName("img");
+null!=c&&1==c.length?(k=c[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(n=!0)):(d=d.getElementsByTagName("a"),null!=d&&1==d.length&&(k=d[0].getAttribute("href")));var m=!0,p=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k,f,g,!0,n,null,m))});n&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){m=a;p()},mxEvent.isControlDown(a)):p()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,
 function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var c=this.maxImageSize,c=Math.min(1,Math.min(c/Math.max(1,d)),c/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,d*c,a*c,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(l,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),
 f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();this.editUpdateListener=mxUtils.bind(this,function(a,b){var d=b.getProperty("edit");null!=d&&this.updateEditReferences(d)});this.editor.undoManager.addListener(mxEvent.BEFORE_UNDO,this.editUpdateListener);this.editor.undoManager.addListener(mxEvent.BEFORE_REDO,this.editUpdateListener);"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,
 arguments);if("data:page/id,"==a.substring(0,13)){var d=a.indexOf(",");0<d&&(b=this.getPageById(a.substring(d+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"==a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)};
@@ -3126,8 +3131,8 @@ k.style.top=b+"px";k.style.left=d+"px";k.style.width=Math.max(0,c-3)+"px";k.styl
 d))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var d=0;d<a.length;d++)mxUtils.bind(this,function(a){var d=new FileReader;d.onload=mxUtils.bind(this,function(d){try{var c=d.target.result,e=a.name;if(null!=e&&0<e.length){!this.useCanvasForExport&&/(\.png)$/i.test(e)&&(e=e.substring(0,e.length-4)+".xml");var f=mxUtils.bind(this,function(a){e=0<=e.lastIndexOf(".")?e.substring(0,e.lastIndexOf("."))+".xml":e+".xml";if("<mxlibrary"==
 a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,e))}catch(u){this.handleError(u,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,e,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(e)||/(\.vs(x|sx?))($|\?)/i.test(e))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();f(a)}));else if(/(\.*<graphml )/.test(c))this.importGraphML(c,mxUtils.bind(this,function(a){this.spinner.stop();
 f(a)}));else if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,e))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?f(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(c))/(\.json)$/i.test(e)&&(e=e.substring(0,e.length-5)+".xml"),this.convertLucidChart(c,
-mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==d.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,d.target.result,a.name))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0,
-9)&&(c=this.extractGraphModelFromPng(c)),this.spinner.stop(),this.openLocalFile(c,e,b)}}catch(y){this.handleError(y)}});d.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?d.readAsDataURL(a):d.readAsText(a)})(a[d])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&&
+mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a,e,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==d.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,d.target.result,a.name))}catch(x){this.handleError(x,mxResources.get("errorLoadingFile"))}}else"image/png"==a.type.substring(0,
+9)&&(c=this.extractGraphModelFromPng(c)),this.spinner.stop(),this.openLocalFile(c,e,b)}}catch(x){this.handleError(x)}});d.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"===a.type.substring(0,5)&&"image/svg"!==a.type.substring(0,9)?d.readAsDataURL(a):d.readAsText(a)})(a[d])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),e=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&&
 this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)?e():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=
 new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root,
 a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function d(a){if(null!=a){var d=a.lastIndexOf(".");0<d&&(a=a.substring(d+1,a.length));null==b[a]&&(b[a]=!0)}}var c=this.editor.graph,e=c.getCellStyle(a);d(mxStencilRegistry.getBasenameForStencil(e[mxConstants.STYLE_SHAPE]));c.model.isEdge(a)&&(d(mxMarker.getPackageForType(e[mxConstants.STYLE_STARTARROW])),d(mxMarker.getPackageForType(e[mxConstants.STYLE_ENDARROW])));
@@ -3142,31 +3147,31 @@ mxResources.get(g.okKey):null,function(a){null!=a&&m.postMessage(JSON.stringify(
 mxUtils.bind(this,function(){this.hideDialog();m.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();m.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),"*")}):null);this.showDialog(k.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{k.init()}catch(O){m.postMessage(JSON.stringify({event:"draft",
 error:O.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();k=1==g.enableRecent;l=1==g.enableSearch;k=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,d){b=b||this.emptyDiagramXml;null!=g.callback?m.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:d}),"*"):(a(b,f,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,k?mxUtils.bind(this,function(a){this.recentReadyCallback=
 a;m.postMessage(JSON.stringify({event:"recentDocs"}),"*")}):null,l?mxUtils.bind(this,function(a,b){this.searchReadyCallback=b;m.postMessage(JSON.stringify({event:"searchDocs",searchStr:a}),"*")}):null,function(a,b,d){m.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:d}),"*")});this.showDialog(k.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));k.init();return}if("searchDocsList"==g.action)this.searchReadyCallback(g.list,g.errorMsg);else if("recentDocsList"==
-g.action)this.recentReadyCallback(g.list,g.errorMsg);else{if("textContent"==g.action){this.editor.graph.setEnabled(!1);var p=this.editor.graph,k="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var n=p;this.currentPage!=this.pages[l]&&(n=this.createTemporaryGraph(p.getStylesheet()),n.model.setRoot(this.pages[l].root));k+=this.pages[l].getName()+" "+n.getIndexableText()+" "}else k=p.getIndexableText();this.editor.graph.setEnabled(!0);m.postMessage(JSON.stringify({event:"textContent",data:k,
-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 q=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,q):this.spinner.stop();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 r=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var p=this.editor.graph,x=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(r);m.postMessage(JSON.stringify(b),"*")}),B=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);
-"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(r))));p!=this.editor.graph&&p.container.parentNode.removeChild(p.container);x(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var p=this.createTemporaryGraph(p.getStylesheet()),E=p.getGlobalVariable,C=this.pages[0];p.getGlobalVariable=function(a){return"page"==a?C.getName():"pagenumber"==a?1:E.apply(this,arguments)};document.body.appendChild(p.container);
-p.model.setRoot(C.root)}this.exportToCanvas(mxUtils.bind(this,function(a){B(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){B(null)}),null,null,null,null,null,null,p)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(r)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?x("data:image/png;base64,"+a.getText()):B(null)}),mxUtils.bind(this,function(){B(null)}))}}else{null!=
-g.xml&&0<g.xml.length&&this.setFileData(g.xml);q=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),q.xml=mxUtils.getXml(k),q.data=this.getFileData(null,null,!0,null,null,null,k),q.format=g.format;else if("html"==g.format)r=this.editor.getGraphXml(),q.data=this.getHtml(r,this.editor.graph),q.xml=mxUtils.getXml(r),q.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background;
-k==mxConstants.NONE&&(k=null);q.xml=this.getFileData(!0);q.format="svg";if(g.embedImages||null==g.embedImages){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),"xmlsvg"==g.format?this.getEmbeddedSvg(q.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(a);m.postMessage(JSON.stringify(q),"*")})):this.convertImages(this.editor.graph.getSvg(k),
-mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();q.data=this.createSvgDataUri(mxUtils.getXml(a));m.postMessage(JSON.stringify(q),"*")}));return}k="xmlsvg"==g.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));q.data=this.createSvgDataUri(k)}m.postMessage(JSON.stringify(q),"*")}return}if("load"==g.action)c=1==g.autosave,this.hideDialog(),null!=g.modified&&null==urlParams.modified&&(urlParams.modified=
+g.action)this.recentReadyCallback(g.list,g.errorMsg);else{if("textContent"==g.action){this.editor.graph.setEnabled(!1);var n=this.editor.graph,k="";if(null!=this.pages)for(l=0;l<this.pages.length;l++){var q=n;this.currentPage!=this.pages[l]&&(q=this.createTemporaryGraph(n.getStylesheet()),q.model.setRoot(this.pages[l].root));k+=this.pages[l].getName()+" "+q.getIndexableText()+" "}else k=n.getIndexableText();this.editor.graph.setEnabled(!0);m.postMessage(JSON.stringify({event:"textContent",data:k,
+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 p=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body,p):this.spinner.stop();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 r=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var n=this.editor.graph,v=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(r);m.postMessage(JSON.stringify(b),"*")}),A=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);
+"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(this.editor.graph.compress(r))));n!=this.editor.graph&&n.container.parentNode.removeChild(n.container);v(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var n=this.createTemporaryGraph(n.getStylesheet()),F=n.getGlobalVariable,C=this.pages[0];n.getGlobalVariable=function(a){return"page"==a?C.getName():"pagenumber"==a?1:F.apply(this,arguments)};document.body.appendChild(n.container);
+n.model.setRoot(C.root)}this.exportToCanvas(mxUtils.bind(this,function(a){A(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){A(null)}),null,null,null,null,null,null,n)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(r)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?v("data:image/png;base64,"+a.getText()):A(null)}),mxUtils.bind(this,function(){A(null)}))}}else{null!=
+g.xml&&0<g.xml.length&&this.setFileData(g.xml);p=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))k=this.getXmlFileData(),p.xml=mxUtils.getXml(k),p.data=this.getFileData(null,null,!0,null,null,null,k),p.format=g.format;else if("html"==g.format)r=this.editor.getGraphXml(),p.data=this.getHtml(r,this.editor.graph),p.xml=mxUtils.getXml(r),p.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;k=this.editor.graph.background;
+k==mxConstants.NONE&&(k=null);p.xml=this.getFileData(!0);p.format="svg";if(g.embedImages||null==g.embedImages){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),"xmlsvg"==g.format?this.getEmbeddedSvg(p.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(a);m.postMessage(JSON.stringify(p),"*")})):this.convertImages(this.editor.graph.getSvg(k),
+mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();p.data=this.createSvgDataUri(mxUtils.getXml(a));m.postMessage(JSON.stringify(p),"*")}));return}k="xmlsvg"==g.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(k));p.data=this.createSvgDataUri(k)}m.postMessage(JSON.stringify(p),"*")}return}if("load"==g.action)c=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.title&&null!=this.buttonContainer&&(l=document.createElement("span"),mxUtils.write(l,g.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="12px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),
-this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),g=null!=g.xmlpng?this.extractGraphModelFromPng(g.xmlpng):g.xml;else{m.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}}var v=mxUtils.bind(this,function(f,g){d=!0;try{a(f,g)}catch(W){this.handleError(W)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())});
+this.buttonContainer.appendChild(l),this.embedFilenameSpan=l),g=null!=g.xmlpng?this.extractGraphModelFromPng(g.xmlpng):g.xml;else{m.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}}var y=mxUtils.bind(this,function(f,g){d=!0;try{a(f,g)}catch(W){this.handleError(W)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())});
 e=k();c&&null==b&&(b=mxUtils.bind(this,function(a,b){var c=k();if(c!=e&&!d){var f=this.createLoadMessage("autosave");f.xml=c;c=JSON.stringify(f);(window.opener||window.parent).postMessage(c,"*")}e=c}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged",
 b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||m.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});null!=g&&"function"===typeof g.substring&&"data:application/vnd.visio;base64,"==g.substring(0,34)?(k="0M8R4KGxGuE"==g.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(g.substring(g.indexOf(",")+
-1)),function(a){v(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=g&&"function"===typeof g.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,"")?this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&v(a.responseText,f)}),""):null!=g&&"function"===typeof g.substring&&this.isLucidChartData(g)?this.convertLucidChart(g,
-mxUtils.bind(this,function(a){v(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(g=k(g),v(g,f))}}));var m=window.opener||window.parent,k="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";m.postMessage(k,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom=
+1)),function(a){y(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),k)):null!=g&&"function"===typeof g.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,"")?this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&y(a.responseText,f)}),""):null!=g&&"function"===typeof g.substring&&this.isLucidChartData(g)?this.convertLucidChart(g,
+mxUtils.bind(this,function(a){y(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):(g=k(g),y(g,f))}}));var m=window.opener||window.parent,k="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";m.postMessage(k,"*")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"3px";a.style.paddingLeft="8px";a.style.paddingBottom=
 "2px";var b=document.createElement("button");mxUtils.write(b,mxResources.get("save"));b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)");b.className="geBigButton";b.style.fontSize="12px";b.style.padding="4px 6px 4px 6px";b.style.borderRadius="3px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()}));a.appendChild(b);"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",
 mxResources.get("saveAndExit")),b.style.fontSize="12px",b.style.marginLeft="6px",b.style.padding="4px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.style.fontSize="12px";b.style.marginLeft="6px";b.style.marginRight="20px";b.style.padding="4px";b.style.cursor="pointer";mxEvent.addListener(b,
 "click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import")));this.showDialog(this.importCsvDialog.container,
-640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var d=a.split("\n"),c=[];if(0<d.length){var e={},f=null,k=null,m=null,q=null,r="",u="auto",A="auto",v=null,z=null,S=40,N=40,K=100,E=0,C=this.editor.graph;C.getGraphBounds();for(var M=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},O=C.getFreeInsertPoint(),V=O.x,T=O.y,O=T,W=null,J="auto",q=null,X=[],la=null,fa=null,Y=0;Y<d.length&&"#"==d[Y].charAt(0);){a=d[Y];for(Y++;Y<
-d.length&&"\\"==a.charAt(a.length-1)&&"#"==d[Y].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(d[Y].substring(1)),Y++;if("#"!=a.charAt(1)){var ca=a.indexOf(":");if(0<ca){var H=mxUtils.trim(a.substring(1,ca)),I=mxUtils.trim(a.substring(ca+1));"label"==H?W=C.sanitizeHtml(I):"style"==H?f=I:"parentstyle"==H?k=I:"identity"==H&&0<I.length&&"-"!=I?m=I:"parent"==H&&0<I.length&&"-"!=I?q=I:"namespace"==H&&0<I.length&&"-"!=I?r=I:"width"==H?u=I:"height"==H?A=I:"left"==H&&0<I.length?v=I:"top"==H&&0<I.length?
-z=I:"ignore"==H?fa=I.split(","):"connect"==H?X.push(JSON.parse(I)):"link"==H?la=I:"padding"==H?E=parseFloat(I):"edgespacing"==H?S=parseFloat(I):"nodespacing"==H?N=parseFloat(I):"levelspacing"==H?K=parseFloat(I):"layout"==H&&(J=I)}}}var aa=this.editor.csvToArray(d[Y]),H=ca=null;if(null!=m||null!=q)for(var L=0;L<aa.length;L++)m==aa[L]&&(ca=L),q==aa[L]&&(H=L);null==W&&(W="%"+aa[0]+"%");if(null!=X)for(var P=0;P<X.length;P++)null==e[X[P].to]&&(e[X[P].to]={});C.model.beginUpdate();try{for(L=Y+1;L<d.length;L++){var da=
+640,520,!0,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(a,b){try{var d=a.split("\n"),c=[];if(0<d.length){var e={},f=null,k=null,m=null,q=null,r="",u="auto",v="auto",B=null,z=null,S=40,N=40,K=100,F=0,C=this.editor.graph;C.getGraphBounds();for(var M=function(){null!=b?b(ga):(C.setSelectionCells(ga),C.scrollCellToVisible(C.getSelectionCell()))},O=C.getFreeInsertPoint(),V=O.x,T=O.y,O=T,W=null,J="auto",q=null,X=[],la=null,fa=null,Y=0;Y<d.length&&"#"==d[Y].charAt(0);){a=d[Y];for(Y++;Y<
+d.length&&"\\"==a.charAt(a.length-1)&&"#"==d[Y].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(d[Y].substring(1)),Y++;if("#"!=a.charAt(1)){var ca=a.indexOf(":");if(0<ca){var H=mxUtils.trim(a.substring(1,ca)),I=mxUtils.trim(a.substring(ca+1));"label"==H?W=C.sanitizeHtml(I):"style"==H?f=I:"parentstyle"==H?k=I:"identity"==H&&0<I.length&&"-"!=I?m=I:"parent"==H&&0<I.length&&"-"!=I?q=I:"namespace"==H&&0<I.length&&"-"!=I?r=I:"width"==H?u=I:"height"==H?v=I:"left"==H&&0<I.length?B=I:"top"==H&&0<I.length?
+z=I:"ignore"==H?fa=I.split(","):"connect"==H?X.push(JSON.parse(I)):"link"==H?la=I:"padding"==H?F=parseFloat(I):"edgespacing"==H?S=parseFloat(I):"nodespacing"==H?N=parseFloat(I):"levelspacing"==H?K=parseFloat(I):"layout"==H&&(J=I)}}}var aa=this.editor.csvToArray(d[Y]),H=ca=null;if(null!=m||null!=q)for(var L=0;L<aa.length;L++)m==aa[L]&&(ca=L),q==aa[L]&&(H=L);null==W&&(W="%"+aa[0]+"%");if(null!=X)for(var P=0;P<X.length;P++)null==e[X[P].to]&&(e[X[P].to]={});C.model.beginUpdate();try{for(L=Y+1;L<d.length;L++){var da=
 this.editor.csvToArray(d[L]);if(null==da){var Z=40<d[L].length?d[L].substring(0,40)+"...":d[L];throw Error(L+" ("+Z+") "+mxResources.get("containsValidationErrors"));}if(da.length==aa.length){var G=null,ja=null!=ca?r+da[ca]:null;null!=ja&&(G=C.model.getCell(ja));null==G&&(G=new mxCell(W,new mxGeometry(V,O,0,0),f||"whiteSpace=wrap;html=1;"),G.vertex=!0,G.id=ja);for(var Q=0;Q<da.length;Q++)C.setAttributeForCell(G,aa[Q],da[Q]);C.setAttributeForCell(G,"placeholders","1");G.style=C.replacePlaceholders(G,
-G.style);for(P=0;P<X.length;P++)e[X[P].to][G.getAttribute(X[P].to)]=G;null!=la&&"link"!=la&&(C.setLinkForCell(G,G.getAttribute(la)),C.setAttributeForCell(G,la,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[G]));var ha=this.editor.graph.getPreferredSizeForCell(G);G.vertex&&(null!=v&&null!=G.getAttribute(v)&&(G.geometry.x=V+parseFloat(G.getAttribute(v))),null!=z&&null!=G.getAttribute(z)&&(G.geometry.y=T+parseFloat(G.getAttribute(z))),"@"==u.charAt(0)&&null!=G.getAttribute(u.substring(1))?
-G.geometry.width=parseFloat(G.getAttribute(u.substring(1))):G.geometry.width="auto"==u?ha.width+E:parseFloat(u),"@"==A.charAt(0)&&null!=G.getAttribute(A.substring(1))?G.geometry.height=parseFloat(G.getAttribute(A.substring(1))):G.geometry.height="auto"==A?ha.height+E:parseFloat(A),O+=G.geometry.height+N);q=null!=H?C.model.getCell(r+da[H]):null;null!=q?(q.style=C.replacePlaceholders(q,k),C.addCell(G,q)):c.push(C.addCell(G))}}for(var ka=c.slice(),ga=c.slice(),P=0;P<X.length;P++)for(var ba=X[P],L=0;L<
+G.style);for(P=0;P<X.length;P++)e[X[P].to][G.getAttribute(X[P].to)]=G;null!=la&&"link"!=la&&(C.setLinkForCell(G,G.getAttribute(la)),C.setAttributeForCell(G,la,null));C.fireEvent(new mxEventObject("cellsInserted","cells",[G]));var ha=this.editor.graph.getPreferredSizeForCell(G);G.vertex&&(null!=B&&null!=G.getAttribute(B)&&(G.geometry.x=V+parseFloat(G.getAttribute(B))),null!=z&&null!=G.getAttribute(z)&&(G.geometry.y=T+parseFloat(G.getAttribute(z))),"@"==u.charAt(0)&&null!=G.getAttribute(u.substring(1))?
+G.geometry.width=parseFloat(G.getAttribute(u.substring(1))):G.geometry.width="auto"==u?ha.width+F:parseFloat(u),"@"==v.charAt(0)&&null!=G.getAttribute(v.substring(1))?G.geometry.height=parseFloat(G.getAttribute(v.substring(1))):G.geometry.height="auto"==v?ha.height+F:parseFloat(v),O+=G.geometry.height+N);q=null!=H?C.model.getCell(r+da[H]):null;null!=q?(q.style=C.replacePlaceholders(q,k),C.addCell(G,q)):c.push(C.addCell(G))}}for(var ka=c.slice(),ga=c.slice(),P=0;P<X.length;P++)for(var ba=X[P],L=0;L<
 c.length;L++){var G=c[L],wa=G.getAttribute(ba.from);if(null!=wa){C.setAttributeForCell(G,ba.from,null);for(var ua=wa.split(","),Q=0;Q<ua.length;Q++){var pa=e[ba.to][ua[Q]];null!=pa&&(W=ba.label,null!=ba.fromlabel&&(W=(G.getAttribute(ba.fromlabel)||"")+(W||"")),null!=ba.tolabel&&(W=(W||"")+(pa.getAttribute(ba.tolabel)||"")),ga.push(C.insertEdge(null,null,W||"",ba.invert?pa:G,ba.invert?G:pa,ba.style||C.createCurrentEdgeStyle())),mxUtils.remove(ba.invert?G:pa,ka))}}}if(null!=fa)for(L=0;L<c.length;L++)for(G=
-c[L],Q=0;Q<fa.length;Q++)C.setAttributeForCell(G,mxUtils.trim(fa[Q]),null);var ta=new mxParallelEdgeLayout(C);ta.spacing=S;var va=function(){ta.execute(C.getDefaultParent());for(var a=0;a<c.length;a++){var b=C.getCellGeometry(c[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==u&&(b.width=Math.round(C.snap(b.width)));"auto"==A&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==J){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var ra=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return ra.apply(this,
+c[L],Q=0;Q<fa.length;Q++)C.setAttributeForCell(G,mxUtils.trim(fa[Q]),null);var ta=new mxParallelEdgeLayout(C);ta.spacing=S;var va=function(){ta.execute(C.getDefaultParent());for(var a=0;a<c.length;a++){var b=C.getCellGeometry(c[a]);b.x=Math.round(C.snap(b.x));b.y=Math.round(C.snap(b.y));"auto"==u&&(b.width=Math.round(C.snap(b.width)));"auto"==v&&(b.height=Math.round(C.snap(b.height)))}};if("circle"==J){var ma=new mxCircleLayout(C);ma.resetEdges=!1;var ra=ma.isVertexIgnored;ma.isVertexIgnored=function(a){return ra.apply(this,
 arguments)||0>mxUtils.indexOf(c,a)};this.executeLayout(function(){ma.execute(C.getDefaultParent());va()},!0,M);M=null}else if("horizontaltree"==J||"verticaltree"==J||"auto"==J&&ga.length==2*c.length-1&&1==ka.length){C.view.validate();var ia=new mxCompactTreeLayout(C,"horizontaltree"==J);ia.levelDistance=N;ia.edgeRouting=!1;ia.resetEdges=!1;this.executeLayout(function(){ia.execute(C.getDefaultParent(),0<ka.length?ka[0]:null)},!0,M);M=null}else if("horizontalflow"==J||"verticalflow"==J||"auto"==J&&
 1==ka.length){C.view.validate();var ea=new mxHierarchicalLayout(C,"horizontalflow"==J?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ea.intraCellSpacing=N;ea.parallelEdgeSpacing=S;ea.interRankCellSpacing=K;ea.disableEdgeStyle=!1;this.executeLayout(function(){ea.execute(C.getDefaultParent(),ga);C.moveCells(ga,V,T)},!0,M);M=null}else if("organic"==J||"auto"==J&&ga.length>c.length){C.view.validate();var sa=new mxFastOrganicLayout(C);sa.forceConstant=3*N;sa.resetEdges=!1;var xa=sa.isVertexIgnored;
 sa.isVertexIgnored=function(a){return xa.apply(this,arguments)||0>mxUtils.indexOf(c,a)};ta=new mxParallelEdgeLayout(C);ta.spacing=S;this.executeLayout(function(){sa.execute(C.getDefaultParent());va()},!0,M);M=null}this.hideDialog()}finally{C.model.endUpdate()}null!=M&&M()}}catch(na){this.handleError(na)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var d="?",c;for(c in urlParams)0>mxUtils.indexOf(a,c)&&
@@ -3188,7 +3193,7 @@ this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.
 this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").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!=c&&c.isRenamable()||"1"==urlParams.embed);
 this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var z=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),
 this.exportDialog=null);z.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,e,g,k){var d=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(d.getSvg(e,g,k)),"image/svg+xml");else{var f=a.getFileData(!0,null,null,null,null,!0),l=d.getGraphBounds(),m=Math.floor(l.width*g/d.view.scale),
-p=Math.floor(l.height*g/d.view.scale);f.length<=MAX_REQUEST_SIZE&&m*p<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+p+"&border="+k+"&xml="+encodeURIComponent(f))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var d=a.changes[b];if(null!=d&&
+n=Math.floor(l.height*g/d.view.scale);f.length<=MAX_REQUEST_SIZE&&m*n<MAX_AREA?(a.hideDialog(),a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+n+"&border="+k+"&xml="+encodeURIComponent(f))})):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var d=a.changes[b];if(null!=d&&
 d.constructor==mxChildChange&&null!=d.child){var c=d.child;if(null!=c.source&&null!=c.source.id){var e=this.getFutureCellForEdit(d.model,a,c.source.id);e!=c.source&&(c.source=e)}null!=c.target&&null!=c.target.id&&(d=this.getFutureCellForEdit(d.model,a,c.target.id),d!=c.target&&(c.target=d))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var e=b.changes.length-1;0<=e;e--){var f=b.changes[e];if(f.constructor==mxChildChange&&null!=f.child&&f.child.id==c){a.contains(f.previous)&&
 (d=f.child);break}}return d}})();function DiagramPage(a){this.node=a;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(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)};
 function RenamePage(a,b,e){this.ui=a;this.page=b;this.previous=this.name=e}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};function MovePage(a,b,e){this.ui=a;this.oldIndex=b;this.newIndex=e}
@@ -3246,38 +3251,38 @@ mxResources.get("copyOf",[a.getName()]))}),c)})};(function(){var a=EditorUi.prot
 a)?c:void 0})),null!=c.relatedPage.root&&a.encodeCell(c.relatedPage.root,k));return k};a.beforeDecode=function(a,b,k){k.ui=a.ui;k.relatedPage=k.ui.getPageById(b.getAttribute("relatedPage"));if(null==k.relatedPage){var c=b.ownerDocument.createElement("diagram");c.setAttribute("id",b.getAttribute("relatedPage"));c.setAttribute("name",b.getAttribute("name"));k.relatedPage=new DiagramPage(c);c=b.getAttribute("viewState");null!=c&&(k.relatedPage.viewState=JSON.parse(c),b.removeAttribute("viewState"));
 b=b.cloneNode(!0);c=b.firstChild;if(null!=c)for(k.relatedPage.root=a.decodeCell(c,!1),k=c.nextSibling,c.parentNode.removeChild(c),c=k;null!=c;){k=c.nextSibling;if(c.nodeType==mxConstants.NODETYPE_ELEMENT){var e=c.getAttribute("id");null==a.lookup(e)&&a.decodeCell(c)}c.parentNode.removeChild(c);c=k}}return b};a.afterDecode=function(a,b,k){k.index=k.previousIndex;return k};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]=
 "selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,c,e,r,v){c=null!=c?c:!1;null==e&&(e=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var k=e.slice(),d=[],f=0;f<e.length;f++){var l=this.view.getState(e[f]),m=null!=l?l.style:this.getCellStyle(e[f]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(e[f],!0,mxUtils.bind(this,function(a,b){null!=b&&d.push(b);a!=e[f]&&d.push(a);return a==e[f]||!this.model.isCollapsed(a)})),
-this.model.setCollapsed(e[f],a))}for(f=0;f<d.length;f++)this.model.setVisible(d[f],!a);e=k;e=b.apply(this,arguments)}finally{this.model.endUpdate()}return e};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 b(a){return p.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=p.getParent(a),b=g.view.getState(a),g.view.getState(a),b="tree"==(null!=
-b?b.style:g.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=p.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function r(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==
+this.model.setCollapsed(e[f],a))}for(f=0;f<d.length;f++)this.model.setVisible(d[f],!a);e=k;e=b.apply(this,arguments)}finally{this.model.endUpdate()}return e};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 b(a){return n.isVertex(a)&&c(a)}function c(a){var b=!1;null!=a&&(a=n.getParent(a),b=g.view.getState(a),g.view.getState(a),b="tree"==(null!=
+b?b.style:g.getCellStyle(a)).containerType);return b}function e(a){var b=!1;null!=a&&(a=n.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function r(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==
 a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function v(a,b){b=null!=b?b:!0;g.model.beginUpdate();try{var c=g.model.getParent(a),d=g.getIncomingEdges(a),e=g.cloneCells([d[0],a]);g.model.setTerminal(e[0],g.model.getTerminal(d[0],!0),!0);var f=r(a),k=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-
-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;g.view.currentRoot!=c&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);var l=g.view.getState(a),p=g.view.scale;if(null!=l){var m=mxRectangle.fromRectangle(l);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*p:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*p;var q=g.getOutgoingEdges(g.model.getTerminal(d[0],!0));if(null!=q){for(var n=f==mxConstants.DIRECTION_SOUTH||
-f==mxConstants.DIRECTION_NORTH,u=k=d=0;u<q.length;u++){var t=g.model.getTerminal(q[u],!1);if(f==r(t)){var A=g.view.getState(t);t!=a&&null!=A&&(n&&b!=A.getCenterX()<l.getCenterX()||!n&&b!=A.getCenterY()<l.getCenterY())&&mxUtils.intersects(m,A)&&(d=10+Math.max(d,(Math.min(m.x+m.width,A.x+A.width)-Math.max(m.x,A.x))/p),k=10+Math.max(k,(Math.min(m.y+m.height,A.y+A.height)-Math.max(m.y,A.y))/p))}}n?k=0:d=0;for(u=0;u<q.length;u++)if(t=g.model.getTerminal(q[u],!1),f==r(t)&&(A=g.view.getState(t),t!=a&&null!=
-A&&(n&&b!=A.getCenterX()<l.getCenterX()||!n&&b!=A.getCenterY()<l.getCenterY()))){var v=[];g.traverse(A.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});g.moveCells(v,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function z(a){g.model.beginUpdate();try{var b=r(a),d=g.getIncomingEdges(a),c=g.cloneCells([d[0],a]);g.model.setTerminal(d[0],c[1],!1);g.model.setTerminal(c[0],c[1],!0);g.model.setTerminal(c[0],a,!1);var e=g.model.getParent(a),f=e.geometry,k=[];g.view.currentRoot!=
-e&&(c[1].geometry.x-=f.x,c[1].geometry.y-=f.y);g.traverse(a,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});var l=a.geometry.width+40,m=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?l=0:b==mxConstants.DIRECTION_NORTH?(l=0,m=-40):b==mxConstants.DIRECTION_WEST?(l=-40,m=0):b==mxConstants.DIRECTION_EAST&&(m=0);g.moveCells(k,l,m);return g.addCells(c,e)}finally{g.model.endUpdate()}}function d(a){g.model.beginUpdate();try{var b=g.model.getParent(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],
-a]);g.model.setTerminal(d[0],a,!0);var c=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<c.length;k++){var l=g.model.getTerminal(c[k],!1);null!=l&&f.push(l)}var m=g.view.getBounds(f),p=r(a),q=g.view.translate,n=g.view.scale;p==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/n-q.x-e.x+10,d[1].geometry.y+=a.geometry.height-e.y+40):p==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=
-null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/n-q.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height-e.y+40):(d[1].geometry.x=p==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width-e.x+40):d[1].geometry.x+(a.geometry.width-e.x+40),d[1].geometry.y=null==m?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(m.y+m.height)/n-q.y+-e.y+10);return g.addCells(d,b)}finally{g.model.endUpdate()}}function f(a,b,d){a=g.getOutgoingEdges(a);d=g.view.getState(d);var c=
-[];if(null!=d&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,d.x+d.width)>=Math.max(f.x,d.x)||b&&Math.min(f.y+f.height,d.y+d.height)>=Math.max(f.y,d.y))&&c.push(f)}c.sort(function(a,d){return b?a.x+a.width-d.x-d.width:a.y+a.height-d.y-d.height})}return c}function l(a,b){var d=r(a),c=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==c&&d!=b?n.actions.get("selectParent").funct():
-d==b?(c=g.getOutgoingEdges(a),null!=c&&0<c.length&&g.setSelectionCell(g.model.getTerminal(c[0],!1))):(d=g.getIncomingEdges(a),null!=d&&0<d.length&&(c=f(g.model.getTerminal(d[0],!0),c,a),d=g.view.getState(a),null!=d&&(d=mxUtils.indexOf(c,d),0<=d&&(d+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=c.length-1&&g.setSelectionCell(c[d].cell)))))}var n=this,g=n.editor.graph,p=g.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings");
-mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var B=n.menus.createPopupMenu;n.menus.createPopupMenu=function(a,d,c){B.apply(this,arguments);if(1==g.getSelectionCount()){d=g.getSelectionCell();var e=g.getOutgoingEdges(d);a.addSeparator();null!=e&&0<e.length&&(b(g.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,c),this.addMenuItems(a,["selectDescendants"],null,c));b(g.getSelectionCell())&&(a.addSeparator(),0<g.getIncomingEdges(d).length&&
-this.addMenuItems(a,["selectSiblings","selectParent"],null,c))}};n.actions.addAction("selectChildren",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getOutgoingEdges(a);if(null!=a){for(var b=[],d=0;d<a.length;d++)b.push(g.model.getTerminal(a[d],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+X");n.actions.addAction("selectSiblings",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);if(null!=a&&0<a.length&&
-(a=g.getOutgoingEdges(g.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],d=0;d<a.length;d++)b.push(g.model.getTerminal(a[d],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+S");n.actions.addAction("selectParent",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);null!=a&&0<a.length&&g.setSelectionCell(g.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");n.actions.addAction("selectDescendants",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=
-g.getSelectionCell(),b=[];g.traverse(a,!0,function(a,d){null!=d&&b.push(d);b.push(a);return!0});g.setSelectionCells(b)}},null,null,"Alt+Shift+D");var x=g.removeCells;g.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var k=a[f];p.isEdge(k)&&c(k)&&(e.push(k),k=p.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),k=g.getIncomingEdges(a[f]),
-a=a.concat(k)):e.push(a[f])}a=e;return x.apply(this,arguments)};n.hoverIcons.getStateAt=function(a,d,c){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,c))};var t=g.duplicateCells;g.duplicateCells=function(a,d){a=null!=a?a:this.getSelectionCells();for(var c=a.slice(0),e=0;e<c.length;e++){var f=g.view.getState(c[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=t.call(this,a,d);if(l.length==
-a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]);if(0==m.length&&0<k.length){var p=this.cloneCell(k[0]);this.addEdge(p,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var y=g.moveCells;g.moveCells=function(a,d,c,e,f,k,l){var m=null;this.model.beginUpdate();try{var p=f,q=this.view.getState(f),n=null!=q?q.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var u=
-0;u<a.length;u++)if(b(a[u])||g.model.isEdge(a[u])&&null==g.model.getTerminal(a[u],!0)){f=g.model.getParent(a[u]);break}if(null!=p&&f!=p&&null!=this.view.getState(a[0])){var r=g.getIncomingEdges(a[0]);if(0<r.length){var t=g.view.getState(g.model.getTerminal(r[0],!0));if(null!=t){var A=g.view.getState(p);null!=A&&(d=(A.getCenterX()-t.getCenterX())/g.view.scale,c=(A.getCenterY()-t.getCenterY())/g.view.scale)}}}}m=y.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.length)for(u=0;u<m.length;u++)if(this.model.isEdge(m[u]))b(p)&&
-0>mxUtils.indexOf(m,this.model.getTerminal(m[u],!0))&&this.model.setTerminal(m[u],p,!0);else if(b(a[u])&&(r=g.getIncomingEdges(a[u]),0<r.length))if(!e)b(p)&&0>mxUtils.indexOf(a,this.model.getTerminal(r[0],!0))&&this.model.setTerminal(r[0],p,!0);else if(0==g.getIncomingEdges(m[u]).length){q=p;if(null==q||q==g.model.getParent(a[u]))q=g.model.getTerminal(r[0],!0);e=this.cloneCell(r[0]);this.addEdge(e,g.getDefaultParent(),q,m[u])}}finally{this.model.endUpdate()}return m};if(null!=n.sidebar){var u=n.sidebar.dropAndConnect;
-n.sidebar.dropAndConnect=function(a,d,c,e){var f=g.model,k=null;f.beginUpdate();try{if(k=u.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var m=g.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var A={88:n.actions.get("selectChildren"),84:n.actions.get("selectSubtree"),80:n.actions.get("selectParent"),83:n.actions.get("selectSiblings")},D=
-n.onKeyDown;n.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&&b(g.getSelectionCell())&&1==g.getSelectionCount()){var c=null;0<g.getIncomingEdges(g.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?z(g.getSelectionCell()):d(g.getSelectionCell()):13==a.which&&(c=v(g.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&g.model.isEdge(c[0])?g.setSelectionCell(g.model.getTerminal(c[0],!1)):g.setSelectionCell(c[c.length-1]),null!=n.hoverIcons&&n.hoverIcons.update(g.view.getState(g.getSelectionCell())),
-g.startEditingAtCell(g.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var e=A[a.keyCode];null!=e&&(e.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(l(g.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(a))}}catch(O){console.log("error",O)}mxEvent.isConsumed(a)||D.apply(this,arguments)};var U=g.connectVertex;g.connectVertex=function(a,c,e,f,k,l){var m=g.getIncomingEdges(a);return b(a)&&0<m.length?(e=r(a),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,k=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(a):f==k?z(a):v(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):U.call(this,a,c,e,f,k,l)};g.getSubtree=function(a){var d=[a];b(a)&&
-!e(a)&&g.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var S=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){S.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width=
+10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;g.view.currentRoot!=c&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);var l=g.view.getState(a),m=g.view.scale;if(null!=l){var n=mxRectangle.fromRectangle(l);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*m:n.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*m;var q=g.getOutgoingEdges(g.model.getTerminal(d[0],!0));if(null!=q){for(var p=f==mxConstants.DIRECTION_SOUTH||
+f==mxConstants.DIRECTION_NORTH,u=k=d=0;u<q.length;u++){var t=g.model.getTerminal(q[u],!1);if(f==r(t)){var v=g.view.getState(t);t!=a&&null!=v&&(p&&b!=v.getCenterX()<l.getCenterX()||!p&&b!=v.getCenterY()<l.getCenterY())&&mxUtils.intersects(n,v)&&(d=10+Math.max(d,(Math.min(n.x+n.width,v.x+v.width)-Math.max(n.x,v.x))/m),k=10+Math.max(k,(Math.min(n.y+n.height,v.y+v.height)-Math.max(n.y,v.y))/m))}}p?k=0:d=0;for(u=0;u<q.length;u++)if(t=g.model.getTerminal(q[u],!1),f==r(t)&&(v=g.view.getState(t),t!=a&&null!=
+v&&(p&&b!=v.getCenterX()<l.getCenterX()||!p&&b!=v.getCenterY()<l.getCenterY()))){var B=[];g.traverse(v.cell,!0,function(a,b){null!=b&&B.push(b);B.push(a);return!0});g.moveCells(B,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function z(a){g.model.beginUpdate();try{var b=r(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],a]);g.model.setTerminal(c[0],d[1],!1);g.model.setTerminal(d[0],d[1],!0);g.model.setTerminal(d[0],a,!1);var e=g.model.getParent(a),f=e.geometry,k=[];g.view.currentRoot!=
+e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);g.traverse(a,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});var l=a.geometry.width+40,n=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?l=0:b==mxConstants.DIRECTION_NORTH?(l=0,n=-40):b==mxConstants.DIRECTION_WEST?(l=-40,n=0):b==mxConstants.DIRECTION_EAST&&(n=0);g.moveCells(k,l,n);return g.addCells(d,e)}finally{g.model.endUpdate()}}function d(a){g.model.beginUpdate();try{var b=g.model.getParent(a),d=g.getIncomingEdges(a),c=g.cloneCells([d[0],
+a]);g.model.setTerminal(c[0],a,!0);var d=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<d.length;k++){var l=g.model.getTerminal(d[k],!1);null!=l&&f.push(l)}var n=g.view.getBounds(f),m=r(a),q=g.view.translate,p=g.view.scale;m==mxConstants.DIRECTION_SOUTH?(c[1].geometry.x=null==n?a.geometry.x+(a.geometry.width-c[1].geometry.width)/2:(n.x+n.width)/p-q.x-e.x+10,c[1].geometry.y+=a.geometry.height-e.y+40):m==mxConstants.DIRECTION_NORTH?(c[1].geometry.x=
+null==n?a.geometry.x+(a.geometry.width-c[1].geometry.width)/2:(n.x+n.width)/p-q.x+-e.x+10,c[1].geometry.y-=c[1].geometry.height-e.y+40):(c[1].geometry.x=m==mxConstants.DIRECTION_WEST?c[1].geometry.x-(c[1].geometry.width-e.x+40):c[1].geometry.x+(a.geometry.width-e.x+40),c[1].geometry.y=null==n?a.geometry.y+(a.geometry.height-c[1].geometry.height)/2:(n.y+n.height)/p-q.y+-e.y+10);return g.addCells(c,b)}finally{g.model.endUpdate()}}function f(a,b,c){a=g.getOutgoingEdges(a);c=g.view.getState(c);var d=
+[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function l(a,b){var c=r(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?p.actions.get("selectParent").funct():
+c==b?(d=g.getOutgoingEdges(a),null!=d&&0<d.length&&g.setSelectionCell(g.model.getTerminal(d[0],!1))):(c=g.getIncomingEdges(a),null!=c&&0<c.length&&(d=f(g.model.getTerminal(c[0],!0),d,a),c=g.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&g.setSelectionCell(d[c].cell)))))}var p=this,g=p.editor.graph,n=g.getModel();mxResources.parse("selectChildren=Select Children");mxResources.parse("selectSiblings=Select Siblings");
+mxResources.parse("selectDescendants=Select Descendants");mxResources.parse("selectParent=Select Parent");var A=p.menus.createPopupMenu;p.menus.createPopupMenu=function(a,c,d){A.apply(this,arguments);if(1==g.getSelectionCount()){c=g.getSelectionCell();var e=g.getOutgoingEdges(c);a.addSeparator();null!=e&&0<e.length&&(b(g.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(g.getSelectionCell())&&(a.addSeparator(),0<g.getIncomingEdges(c).length&&
+this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};p.actions.addAction("selectChildren",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(g.model.getTerminal(a[c],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+X");p.actions.addAction("selectSiblings",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);if(null!=a&&0<a.length&&
+(a=g.getOutgoingEdges(g.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(g.model.getTerminal(a[c],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+S");p.actions.addAction("selectParent",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);null!=a&&0<a.length&&g.setSelectionCell(g.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");p.actions.addAction("selectDescendants",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=
+g.getSelectionCell(),b=[];g.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});g.setSelectionCells(b)}},null,null,"Alt+Shift+D");var y=g.removeCells;g.removeCells=function(a,d){d=null!=d?d:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));d&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var k=a[f];n.isEdge(k)&&c(k)&&(e.push(k),k=n.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),k=g.getIncomingEdges(a[f]),
+a=a.concat(k)):e.push(a[f])}a=e;return y.apply(this,arguments)};p.hoverIcons.getStateAt=function(a,c,d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var t=g.duplicateCells;g.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=g.view.getState(d[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=t.call(this,a,c);if(l.length==
+a.length)for(e=0;e<a.length;e++)if(b(a[e])){var n=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]);if(0==n.length&&0<k.length){var m=this.cloneCell(k[0]);this.addEdge(m,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var x=g.moveCells;g.moveCells=function(a,c,d,e,f,k,l){var n=null;this.model.beginUpdate();try{var m=f,q=this.view.getState(f),p=null!=q?q.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var r=
+0;r<a.length;r++)if(b(a[r])||g.model.isEdge(a[r])&&null==g.model.getTerminal(a[r],!0)){f=g.model.getParent(a[r]);break}if(null!=m&&f!=m&&null!=this.view.getState(a[0])){var u=g.getIncomingEdges(a[0]);if(0<u.length){var t=g.view.getState(g.model.getTerminal(u[0],!0));if(null!=t){var v=g.view.getState(m);null!=v&&(c=(v.getCenterX()-t.getCenterX())/g.view.scale,d=(v.getCenterY()-t.getCenterY())/g.view.scale)}}}}n=x.apply(this,arguments);if(null!=n&&null!=a&&n.length==a.length)for(r=0;r<n.length;r++)if(this.model.isEdge(n[r]))b(m)&&
+0>mxUtils.indexOf(n,this.model.getTerminal(n[r],!0))&&this.model.setTerminal(n[r],m,!0);else if(b(a[r])&&(u=g.getIncomingEdges(a[r]),0<u.length))if(!e)b(m)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],m,!0);else if(0==g.getIncomingEdges(n[r]).length){q=m;if(null==q||q==g.model.getParent(a[r]))q=g.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,g.getDefaultParent(),q,n[r])}}finally{this.model.endUpdate()}return n};if(null!=p.sidebar){var u=p.sidebar.dropAndConnect;
+p.sidebar.dropAndConnect=function(a,c,d,e){var f=g.model,k=null;f.beginUpdate();try{if(k=u.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var n=g.getCellGeometry(k[l]);n.points=null;null!=n.getTerminalPoint(!0)&&n.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var D={88:p.actions.get("selectChildren"),84:p.actions.get("selectSubtree"),80:p.actions.get("selectParent"),83:p.actions.get("selectSiblings")},B=
+p.onKeyDown;p.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&&b(g.getSelectionCell())&&1==g.getSelectionCount()){var c=null;0<g.getIncomingEdges(g.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?z(g.getSelectionCell()):d(g.getSelectionCell()):13==a.which&&(c=v(g.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&g.model.isEdge(c[0])?g.setSelectionCell(g.model.getTerminal(c[0],!1)):g.setSelectionCell(c[c.length-1]),null!=p.hoverIcons&&p.hoverIcons.update(g.view.getState(g.getSelectionCell())),
+g.startEditingAtCell(g.getSelectionCell()),mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var e=D[a.keyCode];null!=e&&(e.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(l(g.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(l(g.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
+mxEvent.consume(a))}}catch(O){console.log("error",O)}mxEvent.isConsumed(a)||B.apply(this,arguments)};var U=g.connectVertex;g.connectVertex=function(a,c,e,f,k,l){var n=g.getIncomingEdges(a);return b(a)&&0<n.length?(e=r(a),f=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST,k=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,e==c?d(a):f==k?z(a):v(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):U.call(this,a,c,e,f,k,l)};g.getSubtree=function(a){var c=[a];b(a)&&
+!e(a)&&g.traverse(a,!0,function(a,b){null!=b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var S=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){S.apply(this,arguments);b(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width=
 "18px",this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells);
 this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var N=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){N.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 K=mxVertexHandler.prototype.destroy;
 mxVertexHandler.prototype.destroy=function(a,b){K.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var c=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=c.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");
 a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");b.vertex=!0;var c=new mxCell("Topic",new mxGeometry(320,
 40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");c.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;b.insertEdge(e,!0);c.insertEdge(e,!1);var d=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=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;b.insertEdge(f,!0);d.insertEdge(f,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");k.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;b.insertEdge(m,!0);k.insertEdge(m,!1);var g=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");g.vertex=!0;var p=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
-p.geometry.relative=!0;p.edge=!0;b.insertEdge(p,!0);g.insertEdge(p,!1);a.insert(e);a.insert(f);a.insert(m);a.insert(p);a.insert(b);a.insert(c);a.insert(d);a.insert(k);a.insert(g);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a],
+m.geometry.relative=!0;m.edge=!0;b.insertEdge(m,!0);k.insertEdge(m,!1);var g=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]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");g.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
+n.geometry.relative=!0;n.edge=!0;b.insertEdge(n,!0);g.insertEdge(n,!1);a.insert(e);a.insert(f);a.insert(m);a.insert(n);a.insert(b);a.insert(c);a.insert(d);a.insert(k);a.insert(g);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;");a.vertex=!0;return sb.createVertexTemplateFromCells([a],
 a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
 b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,
 0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var c=new mxCell("Organization",
@@ -3287,13 +3292,13 @@ a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function
 a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree sub sections",function(){var a=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");
 a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var c=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;container=1;recursiveResize=0;treeFolding=1;");c.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;c.insertEdge(e,!1);return sb.createVertexTemplateFromCells([b,e,a,c],220,60,"Sub Sections")})])}}})();EditorUi.initMinimalTheme=function(){function a(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();null==a.formatWindow?(a.formatWindow=new k(a,mxResources.get("format"),Math.max(20,a.diagramContainer.clientWidth-240-12),56,240,Math.min(566,b.container.clientHeight-10),function(b){b=a.createFormat(b);b.init();return b}),a.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80),a.formatWindow.window.setVisible(!0)):a.formatWindow.window.setVisible(!a.formatWindow.window.isVisible());a.formatWindow.window.isVisible()&&
-a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var d=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,d-6,Math.min(650,b.container.clientHeight-30),function(b){function d(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.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;";
-g.className="geTitle";b.appendChild(g);return g}var c=document.createElement("div");c.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;";c.className="geTitle";c.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(c,mxResources.get("moreShapes"));b.appendChild(c);mxEvent.addListener(c,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries||
-"1"==urlParams.embed&&"1"!=urlParams.libraries)c.style.bottom="0";else if(null!=a.actions.get("newLibrary")){c=document.createElement("div");c.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";c.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));c.appendChild(f);b.appendChild(c);mxEvent.addListener(c,
-"click",a.actions.get("newLibrary").funct);c=document.createElement("div");c.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;";c.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));c.appendChild(f);b.appendChild(c);mxEvent.addListener(c,"click",a.actions.get("openLibrary").funct)}else c=
-d("newLibrary",mxResources.get("newLibrary")),c.style.left="0",c=d("openLibraryFrom",mxResources.get("openLibraryFrom")),c.style.borderLeft="1px solid lightgray",c.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible());
+a.formatWindow.window.fit()}function b(a){var b=a.editor.graph;b.popupMenuHandler.hideMenu();new mxRectangle;if(null==a.sidebarWindow){var c=Math.min(b.container.clientWidth-10,266);a.sidebarWindow=new k(a,mxResources.get("shapes"),10,56,c-6,Math.min(650,b.container.clientHeight-30),function(b){function c(c,d){var f=a.menus.get(c),g=e.addMenu(d,mxUtils.bind(this,function(){f.funct.apply(this,arguments)}));g.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;";
+g.className="geTitle";b.appendChild(g);return g}var d=document.createElement("div");d.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;";d.className="geTitle";d.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(d,mxResources.get("moreShapes"));b.appendChild(d);mxEvent.addListener(d,"click",function(){a.actions.get("shapes").funct()});var e=new Menubar(a,b);if(!Editor.enableCustomLibraries||
+"1"==urlParams.embed&&"1"!=urlParams.libraries)d.style.bottom="0";else if(null!=a.actions.get("newLibrary")){d=document.createElement("div");d.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;";d.className="geTitle";var f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("newLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d,
+"click",a.actions.get("newLibrary").funct);d=document.createElement("div");d.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;";d.className="geTitle";f=document.createElement("span");f.style.cssText="position:relative;top:6px;";mxUtils.write(f,mxResources.get("openLibrary"));d.appendChild(f);b.appendChild(d);mxEvent.addListener(d,"click",a.actions.get("openLibrary").funct)}else d=
+c("newLibrary",mxResources.get("newLibrary")),d.style.left="0",d=c("openLibraryFrom",mxResources.get("openLibraryFrom")),d.style.borderLeft="1px solid lightgray",d.style.left="50%";b.appendChild(a.sidebar.container);b.style.overflow="hidden";return b});a.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);a.sidebarWindow.window.setVisible(!0);a.getLocalData("sidebar",function(b){a.sidebar.showEntries(b,null,!0)});a.restoreLibraries()}else a.sidebarWindow.window.setVisible(!a.sidebarWindow.window.isVisible());
 a.sidebarWindow.window.isVisible()&&a.sidebarWindow.window.fit()}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||"undefined"===typeof window.Menus)window.uiTheme=null;else{var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;try{var c=document.createElement("style");c.type="text/css";c.innerHTML="* { -webkit-font-smoothing: antialiased; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }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; }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; }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; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: #fff !important; }.mxWindow button, .geDialog select, .mxWindow select { display:inline-block; }html body .mxWindow .geColorBtn, html body .geDialog .geColorBtn { background: none; }html body div.diagramContainer button, html body .mxWindow button, html body .geDialog button { min-width: 0px; border-radius: 5px; color: #353535 !important; border-style: solid; border-width: 1px; border-color: rgb(216, 216, 216); }html body div.diagramContainer button:hover, html body .mxWindow button:hover, html body .geDialog button:hover { border-color: rgb(177, 177, 177); }html body div.diagramContainer button:active, html body .mxWindow button:active, html body .geDialog button:active { opacity: 0.6; }div.diagramContainer button.geBtn, .mxWindow button.geBtn, .geDialog button.geBtn { min-width:72px; font-weight: 600; background: none; }div.diagramContainer button.gePrimaryBtn, .mxWindow button.gePrimaryBtn, .geDialog button.gePrimaryBtn, html body .gePrimaryBtn { background: #29b6f2; color: #fff !important; border: none; box-shadow: none; }html body .gePrimaryBtn:hover { background: #29b6f2; border: none; box-shadow: inherit; }html body button.gePrimaryBtn:hover { background: #29b6f2; border: none; }.geBtn button { min-width:72px !important; }div.geToolbarContainer a.geButton { margin:2px; padding: 0 2px 4px 2px; } .geDialog, .mxWindow td.mxWindowPane *, div.geSprite, td.mxWindowTitle, .geDiagramContainer { box-sizing:content-box; }.mxWindow div button.geStyleButton { box-sizing: border-box; }table.mxWindow td.mxWindowPane button.geColorBtn { padding:0px; box-sizing: border-box; }td.mxWindowPane .geSidebarContainer button { padding:2px 0 2px 0; box-sizing: border-box; }html body .geMenuItem { font-size:14px; text-decoration: none; font-weight: normal; padding: 6px 10px 6px 10px; border: none; border-radius: 5px; color: #353535; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }.geToolbarContainer { background:#fff !important; }div.mxWindow .geSidebarContainer .geTitle { background-color:#fdfdfd; }div.mxWindow .geSidebarContainer .geTitle:hover { background-color:#fafafa; }div.geSidebar { background-color: #fff !important;}div.mxWindow td.mxWindowPane button { background-image: none; float: none; }td.mxWindowTitle { height: 22px !important; background: none !important; font-size: 13px !important; text-align:center !important; border-bottom:1px solid lightgray; }div.mxWindow, div.mxWindowTitle { background-image: none !important; background-color:#fff !important; }div.mxWindow { border-radius:5px; box-shadow: 0px 0px 2px #C0C0C0 !important;}div.mxWindow * { font-family: inherit !important; }html div.geVerticalHandle { position:absolute;bottom:0px;left:50%;cursor:row-resize;width:11px;height:11px;background:white;margin-bottom:-6px; margin-left:-6px; border: none; border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.11), inset 0 -1px 0 0 rgba(0,0,0,.08), 0 1px 2px 0 rgba(0,0,0,.04); }html div.geInactivePage { background: rgb(249, 249, 249) !important; color:lightgray !important; } html div.geActivePage { background: white !important;color: #353535 !important; } html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.5) !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: #353535; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: #29b6f2; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: #fff !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; }"+
-(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(c)}catch(p){}var k=function(a,b,c,d,e,f,g){var k=document.createElement("div");k.className="geSidebarContainer";k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.border="1px solid whiteSmoke";k.style.overflowX="hidden";k.style.overflowY="auto";g(k);this.window=new mxWindow(b,k,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);
+(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"");document.getElementsByTagName("head")[0].appendChild(c)}catch(n){}var k=function(a,b,c,d,e,f,g){var k=document.createElement("div");k.className="geSidebarContainer";k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.border="1px solid whiteSmoke";k.style.overflowX="hidden";k.style.overflowY="auto";g(k);this.window=new mxWindow(b,k,c,d,e,f,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);
 this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(a,b){var c=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&
 (this.window.div.onselectstart=mxUtils.bind(this,function(b){null==b&&(b=window.event);return null!=b&&a.isSelectionAllowed(b)}))};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="#ffffff"/>').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="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<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=
@@ -3310,7 +3315,7 @@ mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c
 ["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),this.addMenuItems(a,["-","exitGroup"],null,c)):e.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var f=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.window.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);f.apply(this,arguments)};var l=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){l.apply(this,arguments);a||(null!=
-this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var n=Menus.prototype.init;Menus.prototype.init=function(){n.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"...";
+this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var p=Menus.prototype.init;Menus.prototype.init=function(){p.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;c.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";c.actions.get("createShape").label=mxResources.get("shape")+"...";c.actions.get("outline").label=mxResources.get("outline")+"...";
 c.actions.get("layers").label=mxResources.get("layers")+"...";c.actions.put("importFile",new Action("File...",function(){d.popupMenuHandler.hideMenu();var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a,"change",function(){null!=a.files&&c.importFiles(a.files,null,null,c.maxImageSize)});a.click()}));c.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();c.showImportCsvDialog()}));c.actions.put("importText",new Action(mxResources.get("text")+
 "...",function(){var a=new ParseDialog(c,"Insert from Text");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var a=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(a.container,620,420,!0,!1);a.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){b(c)}));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(c)}));EditorUi.enablePlantUml&&
 !c.isOffline()&&c.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var a=new ParseDialog(c,"Insert from Text","plantUml");c.showDialog(a.container,620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,b){var d=c.getCurrentFile();c.menus.addSubmenu("extras",a,b,mxResources.get("preferences"));a.addSeparator(b);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(c.menus.addMenuItems(a,["new","open","-"],b),EditorUi.isElectronApp&&c.menus.addMenuItems(a,
@@ -3323,10 +3328,10 @@ function(a,b){c.menus.addMenuItems(a,"insertRectangle insertEllipse insertRhombu
 k=function(a,b,d,e){a.addItem(d,null,mxUtils.bind(this,function(){var a=new CreateGraphDialog(c,d,e);c.showDialog(a.container,620,420,!0,!1);a.init()}),b)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){for(var c=0;c<g.length;c++)"-"==g[c]?a.addSeparator(b):k(a,b,mxResources.get(g[c])+"...",g[c])})));this.put("view",new Menu(mxUtils.bind(this,function(a,b){c.menus.addMenuItems(a,"grid guides - connectionArrows connectionPoints -".split(" "),b);if("undefined"!==typeof MathJax){var d=
 c.menus.addMenuItem(a,"mathematicalTypesetting",b);c.menus.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}c.menus.addMenuItems(a,["copyConnect","collapseExpand","-","pageScale"],b)})))};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){function a(a,b,c){var d=l.menus.get(a),e=r.addMenu(mxResources.get(a),mxUtils.bind(this,function(){d.funct.apply(this,arguments)}),q);e.className="geMenuItem";e.style.display="inline-block";e.style.boxSizing="border-box";
 e.style.top="6px";e.style.marginRight="6px";e.style.height="30px";e.style.paddingTop="6px";e.style.paddingBottom="6px";e.style.cursor="pointer";e.setAttribute("title",mxResources.get(a));l.menus.menuCreated(d,e,"geMenuItem");null!=c?(e.style.backgroundImage="url("+c+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.width="34px",e.innerHTML=""):b||(e.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",e.style.backgroundPosition=
-"right 6px center",e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function c(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=l.statusContainer?n.insertBefore(g,l.statusContainer):n.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition=
+"right 6px center",e.style.backgroundRepeat="no-repeat",e.style.paddingRight="22px");return e}function c(a,b,c,d,e,f){var g=document.createElement("a");g.className="geMenuItem";g.style.display="inline-block";g.style.boxSizing="border-box";g.style.height="30px";g.style.padding="6px";g.style.position="relative";g.style.verticalAlign="top";g.style.top="0px";null!=l.statusContainer?p.insertBefore(g,l.statusContainer):p.appendChild(g);null!=f?(g.style.backgroundImage="url("+f+")",g.style.backgroundPosition=
 "center center",g.style.backgroundRepeat="no-repeat",g.style.backgroundSize="24px 24px",g.style.width="34px"):mxUtils.write(g,a);mxEvent.addListener(g,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(g,"click",function(a){"disabled"!=g.getAttribute("disabled")&&b(a);mxEvent.consume(a)});null==c&&(g.style.marginRight="4px");null!=d&&g.setAttribute("title",d);null!=e&&(a=function(){e.isEnabled()?(g.removeAttribute("disabled"),g.style.cursor=
 "pointer"):(g.setAttribute("disabled","disabled"),g.style.cursor="default")},e.addListener("stateChanged",a),a());return g}function d(a,b){var c=document.createElement("div");c.className="geMenuItem";c.style.display="inline-block";c.style.verticalAlign="top";c.style.marginRight="6px";c.style.padding="0 4px 0 4px";c.style.height="30px";c.style.position="relative";c.style.top="0px";for(var d=0;d<a.length;d++)null!=a[d]&&(a[d].style.margin="0px",a[d].style.boxShadow="none",c.appendChild(a[d]));null!=
-b&&mxUtils.setOpacity(c,b);null!=l.statusContainer?n.insertBefore(c,l.statusContainer):n.appendChild(c);return c}function f(){for(var b=n.firstChild;null!=b;){var f=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=f}q=n.firstChild;e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(b=1E3>e)||a("diagram");d([b?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),l.actions.get("toggleShapes").funct,
+b&&mxUtils.setOpacity(c,b);null!=l.statusContainer?p.insertBefore(c,l.statusContainer):p.appendChild(c);return c}function f(){for(var b=p.firstChild;null!=b;){var f=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=f}q=p.firstChild;e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;(b=1E3>e)||a("diagram");d([b?a("diagram",null,IMAGE_PATH+"/drawlogo.svg"):null,c(mxResources.get("shapes"),l.actions.get("toggleShapes").funct,
 null,mxResources.get("shapes"),l.actions.get("image"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgMTN2OGg4di04aC04ek0zIDIxaDh2LThIM3Y4ek0zIDN2OGg4VjNIM3ptMTMuNjYtMS4zMUwxMSA3LjM0IDE2LjY2IDEzbDUuNjYtNS42Ni01LjY2LTUuNjV6Ii8+PC9zdmc+":null),c(mxResources.get("format"),l.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+l.actions.get("formatPanel").shortcut+")",l.actions.get("image"),
 b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiIvPjwvc3ZnPg==":
 null)],b?60:null);f=a("insert",!0,b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiIvPjwvc3ZnPg==":null);d([f,c(mxResources.get("delete"),l.actions.get("delete").funct,null,mxResources.get("delete"),l.actions.get("delete"),b?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIvPjwvc3ZnPg==":
@@ -3336,15 +3341,16 @@ d([c("",function(){m.popupMenuHandler.hideMenu();var a=m.view.scale,b=m.view.tra
 640<=e?c("",b.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",b,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiLz48L3N2Zz4="):
 null,640<=e?c("",f.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",f,"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiIvPjwvc3ZnPg=="):
 null],60)}b=l.menus.get("language");null!=b&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=e?(null==O&&(f=r.addMenu("",b.funct),f.setAttribute("title",mxResources.get("language")),f.className="geToolbarButton",f.style.backgroundImage="url("+Editor.globeImage+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.position="absolute",f.style.height="24px",f.style.width="24px",f.style.zIndex="1",f.style.top="11px",f.style.right=
-"8px",f.style.cursor="pointer",n.appendChild(f),O=f),l.buttonContainer.style.paddingRight="34px"):(l.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}g.apply(this,arguments);var k=document.createElement("div");k.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";k.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(k);urlParams.clibs&&b(this);var l=this,m=l.editor.graph;
-l.toolbar=this.createToolbar(l.createDiv("geToolbar"));l.defaultLibraryName=mxResources.get("untitledLibrary");var n=document.createElement("div");n.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var q=null,r=new Menubar(l,n);l.statusContainer=l.createStatusContainer();l.statusContainer.style.position="relative";l.statusContainer.style.maxWidth="";l.statusContainer.style.marginTop=
-"7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var v=l.descriptorChanged;l.descriptorChanged=function(){v.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);n.setAttribute("title",
-a.getTitle()+(null!=b?" ("+b+")":""))}else n.removeAttribute("title")};l.setStatusText(l.editor.getStatus());n.appendChild(l.statusContainer);l.buttonContainer=document.createElement("div");l.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";n.appendChild(l.buttonContainer);l.menubarContainer=l.buttonContainer;l.tabContainer=document.createElement("div");l.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";
-var k=l.diagramContainer.parentNode,z=document.createElement("div");z.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";l.diagramContainer.style.top="47px";var E=l.menus.get("viewZoom");if(null!=E){this.tabContainer.style.right="70px";var C=r.addMenu("100%",E.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center";
-C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility="hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray";
-C.style.height=parseInt(l.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(l.tabContainer.style.height)+1+"px";z.appendChild(C);E=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,E);l.editor.addListener("resetGraphView",E);l.editor.addListener("pageSelected",E);var M=l.setGraphEnabled;l.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility,
-this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}z.appendChild(l.tabContainer);z.appendChild(n);z.appendChild(l.diagramContainer);k.appendChild(z);l.updateTabContainer();var O=null;f();mxEvent.addListener(window,"resize",function(){f();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();
-null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();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\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\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\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\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\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.\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\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\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\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\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\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\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\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\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. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\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 read access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\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\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\ngithub=GitHub\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\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\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>.\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\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.\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 page refresh.\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\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\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\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\npaste=Paste\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\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\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\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\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\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\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\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\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}'\n");Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=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="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><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="#000000"/><add as="fontColor" value="#000000"/></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><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="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="#ffffff"/><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="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><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="#ffffff"/></add></mxStylesheet>').documentElement;
+"8px",f.style.cursor="pointer",p.appendChild(f),O=f),l.buttonContainer.style.paddingRight="34px"):(l.buttonContainer.style.paddingRight="4px",null!=O&&(O.parentNode.removeChild(O),O=null))}g.apply(this,arguments);var k=document.createElement("div");k.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";k.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(k);null==urlParams.clibs&&null==urlParams.libs||
+b(this);var l=this,m=l.editor.graph;l.toolbar=this.createToolbar(l.createDiv("geToolbar"));l.defaultLibraryName=mxResources.get("untitledLibrary");var p=document.createElement("div");p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var q=null,r=new Menubar(l,p);l.statusContainer=l.createStatusContainer();l.statusContainer.style.position="relative";l.statusContainer.style.maxWidth=
+"";l.statusContainer.style.marginTop="7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var v=l.descriptorChanged;l.descriptorChanged=function(){v.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":"onedrive"==b&&(b="oneDrive");
+b=mxResources.get(b);p.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else p.removeAttribute("title")};l.setStatusText(l.editor.getStatus());p.appendChild(l.statusContainer);l.buttonContainer=document.createElement("div");l.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";p.appendChild(l.buttonContainer);l.menubarContainer=l.buttonContainer;l.tabContainer=document.createElement("div");l.tabContainer.style.cssText=
+"position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var k=l.diagramContainer.parentNode,z=document.createElement("div");z.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";l.diagramContainer.style.top="47px";var F=l.menus.get("viewZoom");if(null!=F){this.tabContainer.style.right="70px";var C=r.addMenu("100%",
+F.funct);C.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");C.style.whiteSpace="nowrap";C.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";C.style.backgroundPosition="right 6px center";C.style.backgroundRepeat="no-repeat";C.style.backgroundColor="#ffffff";C.style.paddingRight="10px";C.style.display="block";C.style.position="absolute";C.style.textDecoration="none";C.style.textDecoration="none";C.style.right="0px";C.style.bottom="0px";C.style.overflow="hidden";C.style.visibility=
+"hidden";C.style.textAlign="center";C.style.color="#000";C.style.fontSize="12px";C.style.color="#707070";C.style.width="59px";C.style.borderTop="1px solid lightgray";C.style.borderLeft="1px solid lightgray";C.style.height=parseInt(l.tabContainer.style.height)-1+"px";C.style.lineHeight=parseInt(l.tabContainer.style.height)+1+"px";z.appendChild(C);F=mxUtils.bind(this,function(){C.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,F);l.editor.addListener("resetGraphView",
+F);l.editor.addListener("pageSelected",F);var M=l.setGraphEnabled;l.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(C.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?"30px":"0px")}}z.appendChild(l.tabContainer);z.appendChild(p);z.appendChild(l.diagramContainer);k.appendChild(z);l.updateTabContainer();var O=null;f();mxEvent.addListener(window,"resize",function(){f();null!=l.sidebarWindow&&
+l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();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\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\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\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Borderwidth\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\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\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\ncsv=CSV\ndark=Dark\ndraftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.\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\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\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\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\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\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Download draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\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\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\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. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\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 read access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\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\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\ngithub=GitHub\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\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\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>.\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\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.\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 page refresh.\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\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\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\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\npaste=Paste\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\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\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\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\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\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\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\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\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}'\n");Graph.prototype.defaultThemes[Graph.prototype.defaultThemeName]=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="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><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="#000000"/><add as="fontColor" value="#000000"/></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><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="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="#ffffff"/><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="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><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="#ffffff"/></add></mxStylesheet>').documentElement;
 Graph.prototype.defaultThemes.darkTheme=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="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><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="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></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="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="#2a2a2a"/><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="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><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="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,b,e){this.init(a,b,e)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://www.draw.io/";GraphViewer.prototype.imageBaseUrl="https://www.draw.io/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.allowZoomIn=!1;
 GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;
 GraphViewer.prototype.init=function(a,b,e){this.graphConfig=null!=e?e:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!=this.graphConfig.toolbar?this.graphConfig.toolbar.split(" "):[];this.zoomEnabled=
@@ -3372,16 +3378,16 @@ function(){g.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),g.style.cur
 e.style.whiteSpace="nowrap";e.style.textAlign="left";e.style.zIndex=this.toolbarZIndex;e.style.backgroundColor="#eee";e.style.height=this.toolbarHeight+"px";this.toolbar=e;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(e.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(e,30);var c=null,k=null,m=mxUtils.bind(this,function(a){null!=c&&(window.clearTimeout(c),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);c=window.setTimeout(mxUtils.bind(this,
 function(){mxUtils.setOpacity(e,0);c=null;k=window.setTimeout(mxUtils.bind(this,function(){e.style.display="none";k=null}),100)}),a||200)}),q=mxUtils.bind(this,function(a){null!=c&&(window.clearTimeout(c),fadeThead=null);null!=k&&(window.clearTimeout(k),fadeThead2=null);e.style.display="";mxUtils.setOpacity(e,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(q(30),m())}));mxEvent.addListener(e,mxClient.IS_POINTER?
 "pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(e,"mouseenter",mxUtils.bind(this,function(a){q(100)}));mxEvent.addListener(e,"mousemove",mxUtils.bind(this,function(a){q(100);mxEvent.consume(a)}));mxEvent.addListener(e,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||q(30)}));var r=this.graph,v=r.getTolerance();r.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();
-this.scrollLeft=r.container.scrollLeft;this.scrollTop=r.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-r.container.scrollLeft)<v&&Math.abs(this.scrollTop-r.container.scrollTop)<v&&Math.abs(this.startX-b.getGraphX())<v&&Math.abs(this.startY-b.getGraphY())<v&&(0<parseFloat(e.style.opacity||0)?m():q(30))}})}for(var z=this.toolbarItems,d=0,f=null,l=null,n=0;n<z.length;n++){var g=z[n];if("pages"==g){l=b.ownerDocument.createElement("div");
-l.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(l,70);var p=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");p.style.borderRightStyle="none";p.style.paddingLeft="0px";p.style.paddingRight="0px";e.appendChild(l);var B=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
-1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");B.style.paddingLeft="0px";B.style.paddingRight="0px";g=mxUtils.bind(this,function(){l.innerHTML="";mxUtils.write(l,this.currentPage+1+" / "+this.diagrams.length);l.style.display=1<this.diagrams.length?"inline-block":"none";p.style.display=l.style.display;B.style.display=l.style.display});this.addListener("graphChanged",g);g()}else if("zoom"==g)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
-mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(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 x=this.graph.getModel(),t=a(mxUtils.bind(this,function(a){if(null!=f)f.parentNode.removeChild(f),
+this.scrollLeft=r.container.scrollLeft;this.scrollTop=r.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-r.container.scrollLeft)<v&&Math.abs(this.scrollTop-r.container.scrollTop)<v&&Math.abs(this.startX-b.getGraphX())<v&&Math.abs(this.startY-b.getGraphY())<v&&(0<parseFloat(e.style.opacity||0)?m():q(30))}})}for(var z=this.toolbarItems,d=0,f=null,l=null,p=0;p<z.length;p++){var g=z[p];if("pages"==g){l=b.ownerDocument.createElement("div");
+l.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(l,70);var n=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");n.style.borderRightStyle="none";n.style.paddingLeft="0px";n.style.paddingRight="0px";e.appendChild(l);var A=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");A.style.paddingLeft="0px";A.style.paddingRight="0px";g=mxUtils.bind(this,function(){l.innerHTML="";mxUtils.write(l,this.currentPage+1+" / "+this.diagrams.length);l.style.display=1<this.diagrams.length?"inline-block":"none";n.style.display=l.style.display;A.style.display=l.style.display});this.addListener("graphChanged",g);g()}else if("zoom"==g)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
+mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(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 y=this.graph.getModel(),t=a(mxUtils.bind(this,function(a){if(null!=f)f.parentNode.removeChild(f),
 f=null;else{f=this.graph.createLayersDialog();mxEvent.addListener(f,"mouseleave",function(){f.parentNode.removeChild(f);f=null});a=t.getBoundingClientRect();f.style.width="140px";f.style.padding="2px 0px 2px 0px";f.style.border="1px solid #d0d0d0";f.style.backgroundColor="#eee";f.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";f.style.fontSize="11px";f.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(f,80);var b=mxUtils.getDocumentScrollOrigin(document);f.style.left=b.x+a.left+
-"px";f.style.top=b.y+a.bottom+"px";document.body.appendChild(f)}}),Editor.layersImage,mxResources.get("layers")||"Layers");x.addListener(mxEvent.CHANGE,function(){t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"});t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"}}else"lightbox"==g?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(g=this.graphConfig["toolbar-buttons"][g],
+"px";f.style.top=b.y+a.bottom+"px";document.body.appendChild(f)}}),Editor.layersImage,mxResources.get("layers")||"Layers");y.addListener(mxEvent.CHANGE,function(){t.style.display=1<y.getChildCount(y.root)?"inline-block":"none"});t.style.display=1<y.getChildCount(y.root)?"inline-block":"none"}}else"lightbox"==g?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(g=this.graphConfig["toolbar-buttons"][g],
 null!=g&&a(null==g.enabled||g.enabled?g.handler:function(){},g.image,g.title,g.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*d);null!=this.graphConfig.title&&(z=b.ownerDocument.createElement("div"),z.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;",z.setAttribute("title",this.graphConfig.title),mxUtils.write(z,this.graphConfig.title),mxUtils.setOpacity(z,
-70),e.appendChild(z));this.minToolbarWidth=34*d;var y=b.style.border,z=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top-
-c.top,bottom:a.bottom-c.top,right:a.right-c.left};e.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=a.top+1+"px"):e.style.top=a.top+"px";"1px solid transparent"==y&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(e);var d=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=f&&(f.parentNode.removeChild(f),
-f=null);b.style.border=y});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==e||a==f)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else e.style.top=-this.toolbarHeight+"px",b.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",z):z()};
+70),e.appendChild(z));this.minToolbarWidth=34*d;var x=b.style.border,z=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top-
+c.top,bottom:a.bottom-c.top,right:a.right-c.left};e.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=a.top+1+"px"):e.style.top=a.top+"px";"1px solid transparent"==x&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(e);var d=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=f&&(f.parentNode.removeChild(f),
+f=null);b.style.border=x});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==e||a==f)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else e.style.top=-this.toolbarHeight+"px",b.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",z):z()};
 GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,c){if(null==c){var k=mxEvent.getSource(e);"a"==k.nodeName.toLowerCase()&&(c=k.getAttribute("href"))}null!=b?null==c||a.isExternalProtocol(c)||a.isBlankLink(c)||window.setTimeout(function(){b.destroy()},0):null!=c&&null==b&&a.isCustomLink(c)&&(mxEvent.isTouchEvent(e)||!mxEvent.isPopupTrigger(e))&&a.customLinkClicked(c)&&mxEvent.consume(e)}),
 mxUtils.bind(this,function(a){null!=b||!this.lightboxClickEnabled||mxEvent.isTouchEvent(a)&&0!=this.toolbarItems.length||this.showLightbox()}))};
 GraphViewer.prototype.showLightbox=function(a,b,e){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){a=null!=a?a:null!=this.graphConfig.editable?this.graphConfig.editable:!0;e={client:1,lightbox:1,target:null!=e?e:"blank"};a&&(e.edit=this.graphConfig.edit||"_blank");if(null!=b?b:1)e.close=1;this.layersEnabled&&(e.layers=1);null!=this.graphConfig&&0!=this.graphConfig.nav&&(e.nav=1);null!=this.graphConfig&&null!=this.graphConfig.highlight&&
@@ -3401,7 +3407,7 @@ GraphViewer.initCss=function(){try{var a=document.createElement("style");a.type=
 GraphViewer.cachedUrls={};GraphViewer.getUrl=function(a,b,e){if(null!=GraphViewer.cachedUrls[a])b(GraphViewer.cachedUrls[a]);else{var c=0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;c.open("GET",a);c.onload=function(){b(null!=c.getText?c.getText():c.responseText)};c.onerror=e;c.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
 (function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(e,c){function k(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function m(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function q(b,c){if(!b.resizedAttached)b.resizedAttached=
 new k,b.resizedAttached.add(c);else if(b.resizedAttached){b.resizedAttached.add(c);return}b.resizeSensor=document.createElement("div");b.resizeSensor.className="resize-sensor";b.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";b.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>';
-b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],l=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};l();var q=!1,r=function(){b.resizedAttached&&(q&&(b.resizedAttached.call(),q=!1),a(r))};a(r);var v,u,A,z,U=function(){if((A=b.offsetWidth)!=v||(z=b.offsetHeight)!=u)q=!0,v=A,u=z;l()},S=function(a,b,c){a.attachEvent?
+b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],l=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};l();var q=!1,r=function(){b.resizedAttached&&(q&&(b.resizedAttached.call(),q=!1),a(r))};a(r);var v,u,z,B,U=function(){if((z=b.offsetWidth)!=v||(B=b.offsetHeight)!=u)q=!0,v=z,u=B;l()},S=function(a,b,c){a.attachEvent?
 a.attachEvent("on"+b,c):a.addEventListener(b,c)};S(d,"scroll",U);S(f,"scroll",U)}var r=function(){GraphViewer.resizeSensorEnabled&&c()},v=Object.prototype.toString.call(e),z="[object Array]"===v||"[object NodeList]"===v||"[object HTMLCollection]"===v||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(z)for(var v=0,d=e.length;v<d;v++)q(e[v],r);else q(e,r);this.detach=function(){if(z)for(var a=0,c=e.length;a<c;a++)b.detach(e[a]);else b.detach(e)}};
 b.detach=function(a){a.resizeSensor&&(a.removeChild(a.resizeSensor),delete a.resizeSensor,delete a.resizedAttached)};window.ResizeSensor=b})();
 (function(){Editor.initMath();GraphViewer.initCss();if(null!=window.onDrawioViewerLoad)window.onDrawioViewerLoad();else GraphViewer.processElements()})();
diff --git a/src/main/webapp/shapes/mxAWS4.js b/src/main/webapp/shapes/mxAWS4.js
index 44e8dc41ce8aa37c3dbb51151615e5955865db93..f62ad384c883107c957827beb1a811c55748027a 100644
--- a/src/main/webapp/shapes/mxAWS4.js
+++ b/src/main/webapp/shapes/mxAWS4.js
@@ -36,9 +36,24 @@ mxShapeAws4ProductIcon.prototype.paintVertexShape = function(c, x, y, w, h)
 {
 	c.translate(x, y);
 
+	var opacity = mxUtils.getValue(this.style, 'opacity', '100');
+	var op1 = opacity;
+	var op2 = opacity;
+	
+	if (fillColor == 'none')
+	{
+		op1 = 0;
+	}
+	
+	if (gradientColor == 'none')
+	{
+		op2 = 0;
+	}
+
 	var ind = 1;
 	var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000');
 	c.setFillColor(strokeColor);
+	c.setGradient(fillColor, fillColor, 0, 0, w, h, gradientDir, op1, op2);	
 
 	c.begin();
 	c.moveTo(0, 0);
@@ -50,7 +65,11 @@ mxShapeAws4ProductIcon.prototype.paintVertexShape = function(c, x, y, w, h)
 
 	c.setShadow(false);
 	var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff');
+	var gradientColor = mxUtils.getValue(this.state.style, 'gradientColor', fillColor);
+	var gradientDir = mxUtils.getValue(this.state.style, 'gradientDirection', 'south');
+	
 	c.setFillColor(fillColor);
+	c.setGradient(fillColor, gradientColor, 0, 0, w, h, gradientDir, op1, op2);	
 
 	c.begin();
 	c.moveTo(ind, ind);