biojs-vis-pdbviewer
Version:
A BioJS 2.0 component to view protein structures
75 lines (74 loc) • 38.7 kB
JavaScript
(function(L,M,N,C,O,y,q,D,E,F,P,G,Q,R,H,B,S,T,I,U,V,K,W,X,Y,Z,$,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,h,m){y("J.api");K(J.api,"JmolPropertyManager");y("JV");D(["J.api.JmolPropertyManager","java.util.Hashtable"],"JV.PropertyManager","java.lang.Boolean $.Character $.Double $.Float java.util.Arrays $.Date $.Map JU.AU $.BArray $.BS $.Base64 $.Lst $.M3 $.M4 $.P3 $.PT $.SB $.V3 J.api.Interface JM.Atom $.BondSet $.LabelToken JS.SV $.T JU.BSUtil $.C $.Edge $.Elements $.Escape $.JmolMolecule $.Logger $.Txt JV.ActionManager $.JC $.Viewer JV.binding.Binding".split(" "),
function(){c$=F(function(){this.map=this.vwr=null;E(this,arguments)},JV,"PropertyManager",null,J.api.JmolPropertyManager);I(c$,function(){this.map=new java.util.Hashtable});G(c$,function(){});m(c$,"setViewer",function(a){this.vwr=a;for(var c=a=0;a<JV.PropertyManager.propertyTypes.length;a+=3)this.map.put(JV.PropertyManager.propertyTypes[a].toLowerCase(),Integer.$valueOf(c++))},"JV.Viewer");m(c$,"getPropertyNumber",function(a){a=this.map.get(null==a?"":a.toLowerCase());return null==a?-1:a.intValue()},
"~S");m(c$,"getDefaultPropertyParam",function(a){return 0>a?"":JV.PropertyManager.propertyTypes[3*a+2]},"~N");m(c$,"checkPropertyParameter",function(a){a=this.getPropertyNumber(a);a=JV.PropertyManager.getParamType(a);return 0<a.length&&"<atom selection>"!==a},"~S");m(c$,"getProperty",function(a,c,f){132!=JV.PropertyManager.propertyTypes.length&&JU.Logger.warn("propertyTypes is not the right length: "+JV.PropertyManager.propertyTypes.length+" != 132");if(0<=c.indexOf(".")||0<=c.indexOf("[")){var b=
this.getArguments(c);f=this.extractProperty(this.getPropertyAsObject(b[0].asString(),f,null),b,1,null,!1)}else f=this.getPropertyAsObject(c,f,a);if(null==a)return f;(b=a.equalsIgnoreCase("readable"))&&(a=JV.PropertyManager.isReadableAsString(c)?"String":"JSON");return a.equalsIgnoreCase("String")?null==f?"":f.toString():b?JU.Escape.toReadable(c,f):a.equalsIgnoreCase("JSON")?"{"+JU.PT.toJSON(c,f)+"}":f},"~S,~S,~O");h(c$,"getArguments",function(a){for(var c=a.toLowerCase(),f=-1;0<=(f=c.indexOf("[select ",
++f));){var b=c.indexOf(" where ",f),d=c.indexOf("]",f);0>b||b>d||(a=a.substring(0,b)+a.substring(b,d).$replace(".","\u0001")+a.substring(d))}a=a.$replace("]","\x00").$replace("[","\x00").$replace(".","\x00").$replace("\u0001",".");a=JU.PT.rep(a,"\x00\x00","\x00");a=JU.PT.split(JU.PT.trim(a,"\x00"),"\x00");for(var c=Array(a.length),f=0,e;f<a.length;f++)c[f]=a[f].startsWith("'")||a[f].startsWith('"')?JS.SV.newS(JU.PT.trim(a[f],"'\"")):-2147483648==(e=JU.PT.parseInt(a[f]))?JS.SV.newS(a[f]):JS.SV.newI(e);
return c},"~S");m(c$,"extractProperty",function(a,c,f,b,d){0>f&&(c=this.getArguments(c),f=0);if(f>=c.length)return a;d||(c=this.compileSelect(c));var e,g=c[f++];d=this.getObj(a);switch(g.tok){case 2:e=g.intValue-1;if(q(d,JU.Lst))return 0>e&&(e+=d.size()),0<=e&&e<d.size()?this.extractProperty(d.get(e),c,f,null,!0):"";if(q(d,JU.M3))return b=d,b=[[b.m00,b.m01,b.m02],[b.m10,b.m11,b.m12],[b.m20,b.m21,b.m22]],0>e&&(e+=3),0<=e&&3>e?this.extractProperty(b,c,--f,null,!0):"";if(q(d,JU.M4))return b=d,b=[[b.m00,
b.m01,b.m02,b.m03],[b.m10,b.m11,b.m12,b.m13],[b.m20,b.m21,b.m22,b.m23],[b.m30,b.m31,b.m32,b.m33]],0>e&&(e+=4),0<=e&&4>e?this.extractProperty(b,c,--f,null,!0):"";if(JU.PT.isAI(d))return 0>e&&(e+=d.length),0<=e&&e<d.length?Integer.$valueOf(d[e]):"";if(JU.PT.isAD(d))return 0>e&&(e+=d.length),0<=e&&e<d.length?Double.$valueOf(d[e]):"";if(JU.PT.isAF(d))return 0>e&&(e+=d.length),0<=e&&e<d.length?Float.$valueOf(d[e]):"";if(JU.PT.isAII(d)||JU.PT.isAFF(d))return 0>e&&(e+=d.length),0<=e&&e<d.length?this.extractProperty(d[e],
c,f,null,!0):"";if(JU.PT.isAS(d)||q(d,Array))return 0>e&&(e+=d.length),0<=e&&e<d.length?d[e]:"";break;case 135280132:case 4:if(q(d,java.util.Map)){if(135280132==g.tok){if(a=g.myName,!this.vwr.checkSelect(d,g.value))return""}else if(a=g.asString(),a.equalsIgnoreCase("keys")){b=new JU.Lst;for(d=d.keySet().iterator();d.hasNext()&&((e=d.next())||1);)b.addLast(e);return this.extractProperty(b,c,f,null,!0)}(e=a.startsWith("*")||a.endsWith("*")||0<=a.indexOf(","))&&null==b&&(b=new JU.Lst);if(e&&1==a.length)return f==
c.length?(b.addLast(d),b):this.extractProperty(d,c,f,b,!0);if(a.contains(",")){e=null;e=new java.util.Hashtable;a=JU.PT.split(a,",");for(g=a.length;0<=--g;)JU.PT.getMapSubset(d,a[g],e);return f==c.length?(b.addLast(e),b):this.extractProperty(e,c,f,b,!0)}a=this.checkMap(d,a,e,b,c,f);return null!=a&&!e?this.extractProperty(d.get(a),c,f,null,!0):e?b:""}if(q(d,JU.Lst)){null==b&&(b=new JU.Lst);f--;for(e=0;e<d.size();e++)a=d.get(e),(q(a,java.util.Map)||q(a,JU.Lst)||q(a,JS.SV)&&(null!=a.getMap()||null!=
a.getList()))&&this.extractProperty(a,c,f,b,!0);return b}}return a},"~O,~O,~N,JU.Lst,~B");h(c$,"compileSelect",function(a){for(var c=null,f=a.length;0<=--f;)if(4==a[f].tok){var b=a[f].value;if(b.toUpperCase().startsWith("SELECT ")){null==c&&(c=JU.AU.arrayCopyObject(a,a.length));b=b.substring(6).trim();b.toUpperCase().startsWith("WHERE ")&&(b="* "+b);var d=b.toUpperCase().indexOf(" WHERE ");0>d?c[f].value=b:(c[f]=JS.SV.newV(135280132,this.vwr.compileExpr(b.substring(d+6).trim())),c[f].myName=b.substring(0,
d).trim())}}return null==c?a:c},"~A");h(c$,"checkMap",function(a,c,f,b,d,e){var g=null==b&&a.containsKey(c);if(!g)for(var j=f?c.toLowerCase():null,p,l=a.keySet().iterator();l.hasNext()&&((p=l.next())||1);)if(p.equalsIgnoreCase(c)||null!=j&&JU.PT.isLike(p.toLowerCase(),j)){if(null==b)return p;b.addLast(this.extractProperty(a.get(p),d,e,null,!0));if(!f)return null}return g?c:null},"java.util.Map,~S,~B,JU.Lst,~O,~N");h(c$,"getObj",function(a){return q(a,JS.SV)?JS.SV.oValue(a):a},"~O");c$.getPropertyName=
h(c$,"getPropertyName",function(a){return 0>a?"":JV.PropertyManager.propertyTypes[3*a]},"~N");c$.getParamType=h(c$,"getParamType",function(a){return 0>a?"":JV.PropertyManager.propertyTypes[3*a+1]},"~N");c$.isReadableAsString=h(c$,"isReadableAsString",function(a){for(var c=JV.PropertyManager.readableTypes.length;0<=--c;)if(a.equalsIgnoreCase(JV.PropertyManager.readableTypes[c]))return!0;return!1},"~S");h(c$,"getPropertyAsObject",function(a,c,f){if(a.equals("tokenList"))return JS.T.getTokensLike(c);
var b=this.getPropertyNumber(a),d=null!=c&&0<c.toString().length;c=d?c:this.getDefaultPropertyParam(b);switch(b){case 0:return this.getAppletInfo();case 5:return this.getAnimationInfo();case 13:return this.vwr.getAtomBitSetVector(c);case 14:return this.getAllAtomInfo(this.vwr.getAtomBitSet(c));case 24:return this.getAuxiliaryInfo(c);case 15:return this.getAllBondInfo(c);case 25:return this.getBoundBoxInfo();case 10:return this.vwr.tm.getRotationCenter();case 16:return this.getAllChainInfo(this.vwr.getAtomBitSet(c));
case 37:return this.vwr.getProperty("DATA_API","consoleText",null);case 26:return this.vwr.getData(c.toString());case 33:return this.vwr.getErrorMessageUn();case 28:return this.vwr.evaluateExpression(c.toString());case 20:return this.vwr.getModelExtract(c,!0,!1,"MOL");case 32:return JV.PropertyManager.getFileInfo(this.vwr.getFileData(),c.toString());case 1:return this.vwr.getFullPathName(!1);case 2:return this.vwr.getFileHeader();case 4:case 3:return d?this.vwr.getFileAsString(c.toString(),!0):this.vwr.getCurrentFileAsString();
case 27:return a=c.toString().toLowerCase(),this.getImage(a,0>a.indexOf("g64")&&0>a.indexOf("base64")&&(null==f||f.equalsIgnoreCase("java")));case 35:return this.vwr.getShapeProperty(24,"getInfo");case 36:return this.vwr.getShapeProperty(24,"getData");case 40:return this.vwr.getNMRCalculation().getInfo(c.toString());case 41:return this.getVariables(c.toString());case 21:return this.vwr.getStatusChanged(c.toString());case 22:return this.vwr;case 38:return this.vwr.getJspecViewProperties(c);case 7:return this.getLigandInfo(this.vwr.getAtomBitSet(c));
case 9:return this.getMeasurementInfo();case 29:return this.vwr.getMenu(c.toString());case 23:return this.vwr.sm.getMessageQueue();case 30:return this.vwr.getMinimizationInfo();case 6:return this.getModelInfo(this.vwr.getAtomBitSet(c));case 18:return this.getMoleculeInfo(this.vwr.getAtomBitSet(c));case 34:return this.getMouseInfo();case 11:return this.vwr.tm.getOrientationInfo();case 31:return this.vwr.getPointGroupInfo(c);case 17:return this.getAllPolymerInfo(this.vwr.getAtomBitSet(c));case 39:return this.vwr.getScriptQueueInfo();
case 8:return this.getShapeInfo();case 19:return this.vwr.getStateInfo3(c.toString(),0,0);case 12:return this.vwr.tm.getMatrixRotate();case 42:return this.getAnnotationInfo(c,1073741925);case 43:return this.getAnnotationInfo(c,1073742189)}f=Array(44);for(b=0;44>b;b++){d=JV.PropertyManager.getParamType(b);c=this.getDefaultPropertyParam(b);var e=JV.PropertyManager.getPropertyName(b);f[b]="X"==e.charAt(0)?"":e+(""!==d?" "+JV.PropertyManager.getParamType(b)+(""!==c?" #default: "+this.getDefaultPropertyParam(b):
""):"")}java.util.Arrays.sort(f);d=new JU.SB;d.append("getProperty ERROR\n").append(a).append("?\nOptions include:\n");for(b=0;44>b;b++)0<f[b].length&&d.append("\n getProperty ").append(f[b]);return d.toString()},"~S,~O,~S");h(c$,"getImage",function(a,c){var f=-1,b=-1,d;if(0<=(d=a.indexOf("height=")))f=JU.PT.parseInt(a.substring(d+7));if(0<=(d=a.indexOf("width=")))b=JU.PT.parseInt(a.substring(d+6));0>b&&0>f?f=b=-1:0>b?b=f:f=b;var e="JPG";0<=a.indexOf("type=")&&(e=JU.PT.getTokens(JU.PT.replaceWithCharacter(a.substring(a.indexOf("type=")+
5),";,"," "))[0]);d=Array(1);f=this.vwr.getImageAsBytes(e.toUpperCase(),b,f,-1,d);return null!=d[0]?d[0]:c?new JU.BArray(f):JU.Base64.getBase64(f).toString()},"~S,~B");h(c$,"getVariables",function(a){return a.toLowerCase().equals("all")?this.vwr.g.getAllVariables():this.vwr.evaluateExpressionAsVariable(a)},"~S");c$.getFileInfo=h(c$,"getFileInfo",function(a,c){var f=new java.util.Hashtable;if(null==a)return f;var b=null!=c&&0<c.length;if(q(a,java.util.Map))return b?a.get(c):a;var d=JU.PT.split(a,"\n");
if(0==d.length||6>d[0].length||" "!=d[0].charAt(6)||!d[0].substring(0,6).equals(d[0].substring(0,6).toUpperCase()))return f.put("fileHeader",a),f;var e="",g=new JU.SB;b&&(c=c.toUpperCase());for(var j="",p=0;p<d.length;p++){var l=d[p];if(!(12>l.length)){var j=l.substring(0,6).trim(),k=l.substring(7,10).trim();j.equals("REMARK")&&(j+=k);if(!j.equals(e)){if(b&&e.equals(c))return g.toString();b||(f.put(e,g.toString()),g=new JU.SB);e=j}(!b||j.equals(c))&&g.append(l).appendC("\n")}}b||f.put(e,g.toString());
return b?j.equals(c)?g.toString():"":f},"~O,~S");h(c$,"getMoleculeInfo",function(a){a=this.vwr.getAtomBitSet(a);for(var c=this.vwr.ms.getMolecules(),f=new JU.Lst,b=new JU.BS,d=0;d<c.length;d++){var b=JU.BSUtil.copy(a),e=c[d];b.and(e.atomList);0<b.length()&&(b=new java.util.Hashtable,b.put("mf",e.getMolecularFormula(!1)),b.put("number",Integer.$valueOf(e.moleculeIndex+1)),b.put("modelNumber",this.vwr.ms.getModelNumberDotted(e.modelIndex)),b.put("numberInModel",Integer.$valueOf(e.indexInModel+1)),b.put("nAtoms",
Integer.$valueOf(e.ac)),b.put("nElements",Integer.$valueOf(e.nElements)),f.addLast(b))}return f},"~O");m(c$,"getModelInfo",function(a){a=this.vwr.ms.getModelBS(this.vwr.getAtomBitSet(a),!1);var c=this.vwr.ms,f=new java.util.Hashtable;f.put("modelSetName",c.modelSetName);f.put("modelCount",Integer.$valueOf(c.mc));f.put("isTainted",Boolean.$valueOf(null!=c.tainted));f.put("canSkipLoad",Boolean.$valueOf(c.canSkipLoad));f.put("modelSetHasVibrationVectors",Boolean.$valueOf(c.modelSetHasVibrationVectors()));
null!=c.modelSetProperties&&f.put("modelSetProperties",c.modelSetProperties);f.put("modelCountSelected",Integer.$valueOf(JU.BSUtil.cardinalityOf(a)));f.put("modelsSelected",a);var b=new JU.Lst;c.getMolecules();for(var d=a.nextSetBit(0);0<=d;d=a.nextSetBit(d+1)){var e=new java.util.Hashtable;e.put("_ipt",Integer.$valueOf(d));e.put("num",Integer.$valueOf(c.getModelNumber(d)));e.put("file_model",c.getModelNumberDotted(d));e.put("name",c.getModelName(d));var g=c.getModelTitle(d);null!=g&&e.put("title",
g);g=c.getModelFileName(d);null!=g&&e.put("file",g);g=c.getInfo(d,"modelID");null!=g&&e.put("id",g);e.put("vibrationVectors",Boolean.$valueOf(this.vwr.modelHasVibrationVectors(d)));g=c.am[d];e.put("atomCount",Integer.$valueOf(g.ac));e.put("bondCount",Integer.$valueOf(g.getBondCount()));e.put("groupCount",Integer.$valueOf(g.getGroupCount()));e.put("moleculeCount",Integer.$valueOf(g.moleculeCount));e.put("polymerCount",Integer.$valueOf(g.getBioPolymerCount()));e.put("chainCount",Integer.$valueOf(c.getChainCountInModelWater(d,
!0)));null!=g.properties&&e.put("modelProperties",g.properties);var j=c.getInfo(d,"Energy");null!=j&&e.put("energy",j);e.put("atomCount",Integer.$valueOf(g.ac));b.addLast(e)}f.put("models",b);return f},"~O");m(c$,"getLigandInfo",function(a){var c=this.vwr.getAtomBitSet(a),f=this.vwr.getAtomBitSet("solvent");a=new java.util.Hashtable;var b=new JU.Lst;a.put("ligands",b);var d=this.vwr.ms,e=JU.BSUtil.copyInvert(c,d.ac);e.or(f);for(var f=d.at,g=c.nextSetBit(0);0<=g;g=c.nextSetBit(g+1))(f[g].isProtein()||
f[g].isNucleic())&&e.set(g);c=Array(d.mc);for(g=d.mc;0<=--g;)c[g]=this.vwr.getModelUndeletedAtomsBitSet(g),c[g].andNot(e);e=JU.JmolMolecule.getMolecules(f,c,null,e);for(g=0;g<e.length;g++){var c=e[g].atomList,j=new java.util.Hashtable;b.addLast(j);j.put("atoms",JU.Escape.eBS(c));for(var p="",l="",k=null,A=0,n=null,h="",t="",r=2147483647,q=2147483647,s=c.nextSetBit(0);0<=s;s=c.nextSetBit(s+1)){var m=f[s];if(k!==m.group){var k=m.group,v=m.getResno(),x=m.getChainID();r!=v-1&&(0!=h.length&&r!=q&&(h+=
"-"+r),x=-1,q=v);t="/"+d.getModelNumberDotted(m.mi);0!=A&&x!=A&&(h+=":"+n+t);-1==x&&(h+=" "+v);r=v;A=m.getChainID();n=m.getChainIDStr();p+=l+m.getGroup3(!1);l="-"}}h+=(q==r?"":"-"+r)+(0==A?"":":"+n)+t;j.put("groupNames",p);j.put("residueList",h.substring(1))}return a},"~O");m(c$,"getSymmetryInfo",function(a,c,f,b,d,e,g){var j=-1;if(null==a){j=this.vwr.am.cmi;if(0>j)return"";a=this.vwr.getModelUndeletedAtomsBitSet(j)}a=a.nextSetBit(0);if(0>a)return"";var j=this.vwr.ms.at[a].mi,p=this.vwr.ms.am[j].biosymmetry;
null==p&&(p=this.vwr.ms.getUnitCell(j));return null==p?"":p.getSymmetryInfo(this.vwr.ms,j,a,p,c,f,b,d,e,g)},"JU.BS,~S,~N,JU.P3,JU.P3,~S,~N");m(c$,"getModelExtract",function(a,c,f,b){var d=b.equalsIgnoreCase("V3000"),e=b.equalsIgnoreCase("SDF"),g=b.equalsIgnoreCase("XYZVIB"),j=b.equalsIgnoreCase("JSON")||b.equalsIgnoreCase("CD");b=new JU.SB;var p=this.vwr.ms;if(!g&&!j){b.append(f?"Jmol Model Kit":this.vwr.getFullPathName(!1).$replace("\\","/"));f=JV.Viewer.getJmolVersion();b.append("\n__Jmol-").append(f.substring(0,
2));var l,k,h,n;n=new Date;f=n.getMonth();l=n.getDate();k=n.getFullYear();h=n.getHours();n=n.getMinutes();JU.Txt.rightJustify(b,"_00",""+(1+f));JU.Txt.rightJustify(b,"00",""+l);b.append((""+k).substring(2,4));JU.Txt.rightJustify(b,"00",""+h);JU.Txt.rightJustify(b,"00",""+n);b.append("3D 1 1.00000 0.00000 0");b.append("\nJmol version ").append(JV.Viewer.getJmolVersion()).append(" EXTRACT: ").append(JU.Escape.eBS(a)).append("\n")}f=JU.BSUtil.copy(a);k=p.at;for(l=a.nextSetBit(0);0<=l;l=a.nextSetBit(l+
1))c&&k[l].isDeleted()&&f.clear(l);h=JV.PropertyManager.getCovalentBondsForAtoms(p.bo,p.bondCount,f);if(!g&&0==f.cardinality())return"";a=!0;c=c?this.vwr.tm.getRotationQuaternion():null;if(e){k=b.toString();b=new JU.SB;d=this.vwr.ms.getModelBS(f,!0);for(l=d.nextSetBit(0);0<=l;l=d.nextSetBit(l+1)){b.append(k);e=JU.BSUtil.copy(f);e.and(p.getModelAtomBitSetIncludingDeleted(l,!1));h=JV.PropertyManager.getCovalentBondsForAtoms(p.bo,p.bondCount,e);if(!(a=this.addMolFile(b,e,h,!1,!1,c)))break;b.append("$$$$\n")}}else if(g){g=
JM.LabelToken.compile(this.vwr,"%-2e %10.5x %10.5y %10.5z %10.5vx %10.5vy %10.5vz\n","\x00",null);c=JM.LabelToken.compile(this.vwr,"%-2e %10.5x %10.5y %10.5z\n","\x00",null);d=this.vwr.ms.getModelBS(f,!0);j=new JU.P3;for(l=d.nextSetBit(0);0<=l;l=d.nextSetBit(l+1))if(e=JU.BSUtil.copy(f),e.and(p.getModelAtomBitSetIncludingDeleted(l,!1)),0!=e.cardinality()){b.appendI(e.cardinality()).appendC("\n");h=p.am[l].properties;b.append("Model["+(l+1)+"]: ");if(null!=p.frameTitles[l]&&0<p.frameTitles[l].length)b.append(p.frameTitles[l].$replace("\n",
" "));else if(null==h)b.append("Jmol "+JV.Viewer.getJmolVersion());else{n=new JU.SB;for(var m=h.propertyNames(),q=null;m.hasMoreElements();){var r=m.nextElement();r.equals(".PATH")?q=h.getProperty(r):n.append(";").append(r).append("=").append(h.getProperty(r))}null!=q&&n.append(";PATH=").append(q);q=n.substring(0<n.length()?1:0);b.append(q.$replace("\n"," "))}b.appendC("\n");for(h=e.nextSetBit(0);0<=h;h=e.nextSetBit(h+1))b.append(JM.LabelToken.formatLabelAtomArray(this.vwr,k[h],null==p.getVibration(h,
!1)?c:g,"\x00",null,j))}}else a=this.addMolFile(b,f,h,d,j,c);return a?b.toString():"ERROR: Too many atoms or bonds -- use V3000 format."},"JU.BS,~B,~B,~S");h(c$,"addMolFile",function(a,c,f,b,d,e){var g=c.cardinality(),j=f.cardinality();if(!b&&!d&&(999<g||999<j))return!1;var p=this.vwr.ms,h=H(p.ac,0),k=new JU.P3;b?a.append(" 0 0 0 0 0 0 999 V3000"):d?a.append('{"mol":{"createdBy":"Jmol '+JV.Viewer.getJmolVersion()+'","a":['):(JU.Txt.rightJustify(a," ",""+g),JU.Txt.rightJustify(a,
" ",""+j),a.append(" 0 0 0 0 1 V2000"));d||a.append("\n");b&&a.append("M V30 BEGIN CTAB\nM V30 COUNTS ").appendI(g).append(" ").appendI(j).append(" 0 0 0\n").append("M V30 BEGIN ATOM\n");for(var m=new JU.P3,j=c.nextSetBit(0),n=0;0<=j;j=c.nextSetBit(j+1))this.getAtomRecordMOL(p,a,h[j]=++n,p.at[j],e,k,m,b,d);b?a.append("M V30 END ATOM\nM V30 BEGIN BOND\n"):d&&a.append('],"b":[');j=f.nextSetBit(0);for(n=0;0<=j;j=f.nextSetBit(j+1))this.getBondRecordMOL(a,++n,p.bo[j],h,b,d);b&&
a.append("M V30 END BOND\nM V30 END CTAB\n");d?a.append("]}}"):a.append("M END\n");if(!d&&!b&&(f=p.getPartialCharges(),null!=f)){a.append("> <JMOL_PARTIAL_CHARGES>\n").appendI(g).appendC("\n");j=c.nextSetBit(0);for(n=0;0<=j;j=c.nextSetBit(j+1))a.appendI(++n).append(" ").appendF(f[j]).appendC("\n")}return!0},"JU.SB,JU.BS,JU.BS,~B,~B,JU.Quat");c$.getCovalentBondsForAtoms=h(c$,"getCovalentBondsForAtoms",function(a,c,f){for(var b=new JU.BS,d=0;d<c;d++){var e=a[d];f.get(e.atom1.i)&&(f.get(e.atom2.i)&&
e.isCovalent())&&b.set(d)}return b},"~A,~N,JU.BS");h(c$,"getAtomRecordMOL",function(a,c,f,b,d,e,g,j,p){a.am[b.mi].isTrajectory?b.setFractionalCoordPt(g,a.trajectorySteps.get(b.mi)[b.i-a.am[b.mi].firstAtomIndex],!0):e.setT(b);null!=d&&d.transformP2(e,e);a=b.getElementNumber();d=b.isDeleted()?"Xx":JU.Elements.elementSymbolFromNumber(a);g=b.getIsotopeNumber();var h=b.getFormalCharge();j?(c.append("M V30 ").appendI(f).append(" ").append(d).append(" ").appendF(e.x).append(" ").appendF(e.y).append(" ").appendF(e.z).append(" 0"),
0!=h&&c.append(" CHG=").appendI(h),0!=g&&c.append(" MASS=").appendI(g),c.append("\n")):p?(1!=f&&c.append(","),c.append("{"),6!=b.getElementNumber()&&c.append('"l":"').append(b.getElementSymbol()).append('",'),0!=h&&c.append('"c":').appendI(h).append(","),0!=g&&g!=JU.Elements.getNaturalIsotope(a)&&c.append('"m":').appendI(g).append(","),c.append('"x":').appendF(b.x).append(',"y":').appendF(b.y).append(',"z":').appendF(b.z).append("}")):(c.append(JU.Txt.sprintf("%10.5p%10.5p%10.5p","p",[e])),c.append(" ").append(d),
1==d.length&&c.append(" "),0<g&&(g-=JU.Elements.getNaturalIsotope(b.getElementNumber())),c.append(" "),JU.Txt.rightJustify(c," ",""+g),JU.Txt.rightJustify(c," ",""+(0==h?0:4-h)),c.append(" 0 0 0 0\n"))},"JM.ModelSet,JU.SB,~N,JM.Atom,JU.Quat,JU.P3,JU.P3,~B,~B");h(c$,"getBondRecordMOL",function(a,c,f,b,d,e){var g=b[f.atom1.i];b=b[f.atom2.i];var j=f.getValence();3<j&&(j=1);switch(f.order&-131073){case 515:j=e?-3:4;break;case 66:j=e?-3:5;break;case 513:j=e?1:6;break;case 514:j=e?2:7;break;case 33:j=
e?-1:8}d?a.append("M V30 ").appendI(c).append(" ").appendI(j).append(" ").appendI(g).append(" ").appendI(b).appendC("\n"):e?(1!=c&&a.append(","),a.append('{"b":').appendI(g-1).append(',"e":').appendI(b-1),1!=j&&(a.append(',"o":'),0>j?a.appendF(-j/2):a.appendI(j)),a.append("}")):(JU.Txt.rightJustify(a," ",""+g),JU.Txt.rightJustify(a," ",""+b),a.append(" ").appendI(j).append(" 0 0 0\n"))},"JU.SB,~N,JM.Bond,~A,~B,~B");m(c$,"getChimeInfo",function(a,c){switch(a){case 1073741982:break;case 1073741864:return this.getBasePairInfo(c);
default:return this.getChimeInfoA(this.vwr.ms.at,a,c)}var f=new JU.SB;this.vwr.ms.am[0].getChimeInfo(f,0);return f.appendC("\n").toString().substring(1)},"~N,JU.BS");h(c$,"getChimeInfoA",function(a,c,f){var b=new JU.SB;b.append("\n");var d="",e=null,g=null,j=-1,h=0;if(null!=f)for(var l=f.nextSetBit(0);0<=l;l=f.nextSetBit(l+1)){var k=a[l];switch(c){default:return"";case 1114638363:d=k.getInfo();break;case 1141899265:d=""+k.getAtomNumber();break;case 1087373318:d=k.getGroup3(!1);break;case 1087373316:case 1073742120:case 1087373320:case 1087373319:var m=
k.getChainID(),d=0==m?" ":k.getChainIDStr();255<m&&(d=JU.PT.esc(d));switch(c){case 1073742120:d="["+k.getGroup3(!1)+"]"+k.getSeqcodeString()+":"+d;break;case 1087373320:case 1087373319:k.getModelIndex()!=j&&(b.appendC("\n"),h=0,j=k.getModelIndex(),b.append("Model "+k.getModelNumber()),e=g=null);k.getChain()!==e&&(b.appendC("\n"),h=0,e=k.getChain(),b.append("Chain "+d+":\n"),g=null);d=k.getGroup();d!==g&&(g=d,1087373319==c?b.append(k.getGroup1("?")):(0==h++%5&&1<h&&b.appendC("\n"),JU.Txt.leftJustify(b,
" ","["+k.getGroup3(!1)+"]"+k.getResno()+" ")));continue}}0>b.indexOf("\n"+d+"\n")&&b.append(d).appendC("\n")}1087373320==c&&b.appendC("\n");return b.toString().substring(1)},"~A,~N,JU.BS");m(c$,"getModelFileInfo",function(a){for(var c=this.vwr.ms,f=new JU.SB,b=0;b<c.mc;++b)if(null==a||a.get(b)){var d='["'+c.getModelNumberDotted(b)+'"] = ';f.append("\n\nfile").append(d).append(JU.PT.esc(c.getModelFileName(b)));var e=c.getInfo(b,"modelID");null!=e&&f.append("\nid").append(d).append(JU.PT.esc(e));
f.append("\ntitle").append(d).append(JU.PT.esc(c.getModelTitle(b)));f.append("\nname").append(d).append(JU.PT.esc(c.getModelName(b)));f.append("\ntype").append(d).append(JU.PT.esc(c.getModelFileType(b)))}return f.toString()},"JU.BS");h(c$,"getAllAtomInfo",function(a){for(var c=new JU.Lst,f=new JU.P3,b=a.nextSetBit(0);0<=b;b=a.nextSetBit(b+1))c.addLast(this.getAtomInfoLong(b,f));return c},"JU.BS");h(c$,"getAtomInfoLong",function(a,c){var f=this.vwr.ms,b=f.at[a],d=new java.util.Hashtable;f.getAtomIdentityInfo(a,
d,c);d.put("element",f.getElementName(a));d.put("elemno",Integer.$valueOf(f.getElementNumber(a)));d.put("x",Float.$valueOf(b.x));d.put("y",Float.$valueOf(b.y));d.put("z",Float.$valueOf(b.z));d.put("coord",JU.P3.newP(b));null!=f.vibrations&&null!=f.vibrations[a]&&f.vibrations[a].getInfo(d);d.put("bondCount",Integer.$valueOf(b.getCovalentBondCount()));d.put("radius",Float.$valueOf(b.getRasMolRadius()/120));d.put("model",b.getModelNumberForLabel());var e=JM.Atom.atomPropertyString(this.vwr,b,1087373323);
null!=e&&d.put("shape",e);d.put("visible",Boolean.$valueOf(b.checkVisible()));d.put("clickabilityFlags",Integer.$valueOf(b.clickabilityFlags));d.put("visibilityFlags",Integer.$valueOf(b.shapeVisibilityFlags));d.put("spacefill",Float.$valueOf(b.getRadius()));e=JU.Escape.escapeColor(this.vwr.getColorArgbOrGray(b.colixAtom));null!=e&&d.put("color",e);d.put("colix",Integer.$valueOf(b.colixAtom));(e=b.isTranslucent())&&d.put("translucent",Boolean.$valueOf(e));d.put("formalCharge",Integer.$valueOf(b.getFormalCharge()));
d.put("partialCharge",Float.$valueOf(b.getPartialCharge()));e=b.getSurfaceDistance100()/100;0<=e&&d.put("surfaceDistance",Float.$valueOf(e));if(f.am[b.mi].isBioModel){d.put("resname",b.getGroup3(!1));var e=b.getInsertionCode(),g=b.getResno();0<g&&d.put("resno",Integer.$valueOf(g));0!=e.charCodeAt(0)&&d.put("insertionCode",""+e);d.put("name",f.getAtomName(a));d.put("chain",b.getChainIDStr());d.put("atomID",Integer.$valueOf(b.atomID));d.put("groupID",Integer.$valueOf(b.getGroupID()));"\x00"!=b.altloc&&
d.put("altLocation",""+b.altloc);d.put("structure",Integer.$valueOf(b.getProteinStructureType().getId()));d.put("polymerLength",Integer.$valueOf(b.getPolymerLength()));d.put("occupancy",Integer.$valueOf(b.getOccupancy100()));f=b.getBfactor100();d.put("temp",Integer.$valueOf(C(f/100)))}return d},"~N,JU.P3");h(c$,"getAllBondInfo",function(a){var c=new JU.Lst,f=this.vwr.ms,b=f.bondCount,f=f.bo,d;q(a,String)&&(a=this.vwr.getAtomBitSet(a));var e=new JU.P3;if(q(a,Array)){d=a[0];var g=a[1];for(a=0;a<b;a++){var j=
f[a].atom1.i,h=f[a].atom2.i;(d.get(j)&&g.get(h)||g.get(j)&&d.get(h))&&c.addLast(this.getBondInfo(a,e))}}else if(q(a,JM.BondSet)){d=a;for(a=d.nextSetBit(0);0<=a&&a<b;a=d.nextSetBit(a+1))c.addLast(this.getBondInfo(a,e))}else if(q(a,JU.BS)){d=a;g=1==d.cardinality()?d.nextSetBit(0):-1;for(a=0;a<b;a++)(0<=g?f[a].atom1.i==g||f[a].atom2.i==g:d.get(f[a].atom1.i)&&d.get(f[a].atom2.i))&&c.addLast(this.getBondInfo(a,e))}return c},"~O");h(c$,"getBondInfo",function(a,c){var f=this.vwr.ms.bo[a],b=f.atom1,d=f.atom2,
e=new java.util.Hashtable;e.put("_bpt",Integer.$valueOf(a));var g=new java.util.Hashtable;this.vwr.ms.getAtomIdentityInfo(b.i,g,c);var j=new java.util.Hashtable;this.vwr.ms.getAtomIdentityInfo(d.i,j,c);e.put("atom1",g);e.put("atom2",j);e.put("order",Float.$valueOf(JU.PT.fVal(JU.Edge.getBondOrderNumberFromOrder(f.order))));e.put("type",JU.Edge.getBondOrderNameFromOrder(f.order));e.put("radius",Float.$valueOf(f.mad/2E3));e.put("length_Ang",Float.$valueOf(b.distance(d)));e.put("visible",Boolean.$valueOf(0!=
f.shapeVisibilityFlags));b=JU.Escape.escapeColor(this.vwr.getColorArgbOrGray(f.colix));null!=b&&e.put("color",b);e.put("colix",Integer.$valueOf(f.colix));JU.C.isColixTranslucent(f.colix)&&e.put("translucent",Boolean.TRUE);return e},"~N,JU.P3");h(c$,"getAllChainInfo",function(a){for(var c=new java.util.Hashtable,f=new JU.Lst,b=this.vwr.ms.mc,d=0;d<b;++d){var e=new java.util.Hashtable,g=this.getChainInfo(d,a);0<g.size()&&(e.put("modelIndex",Integer.$valueOf(d)),e.put("chains",g),f.addLast(e))}c.put("models",
f);return c},"JU.BS");h(c$,"getChainInfo",function(a,c){for(var f=this.vwr.ms.am[a],b=f.getChainCount(!0),d=new JU.Lst,e=new JU.P3,g=0;g<b;g++){for(var j=f.getChainAt(g),h=new JU.Lst,l=j.getGroupCount(),k=new java.util.Hashtable,m=0;m<l;m++){var n=j.getGroup(m);c.get(n.firstAtomIndex)&&h.addLast(n.getGroupInfo(m,e))}h.isEmpty()||(k.put("residues",h),d.addLast(k))}return d},"~N,JU.BS");h(c$,"getAllPolymerInfo",function(a){for(var c=new java.util.Hashtable,f=new JU.Lst,b=this.vwr.ms.mc,d=this.vwr.ms.am,
e=0;e<b;++e)d[e].isBioModel&&d[e].getAllPolymerInfo(a,c,f);c.put("models",f);return c},"JU.BS");h(c$,"getBasePairInfo",function(a){var c=new JU.SB,f=new JU.Lst;this.vwr.ms.calcRasmolHydrogenBonds(a,a,f,!0,1,!1,null);for(a=f.size();0<=--a;){var b=f.get(a);JV.PropertyManager.getAtomResidueInfo(c,b.atom1);c.append(" - ");JV.PropertyManager.getAtomResidueInfo(c,b.atom2);c.append("\n")}return c.toString()},"JU.BS");c$.getAtomResidueInfo=h(c$,"getAtomResidueInfo",function(a,c){a.append("[").append(c.getGroup3(!1)).append("]").append(c.getSeqcodeString()).append(":");
var f=c.getChainID();a.append(0==f?" ":c.getChainIDStr())},"JU.SB,JM.Atom");h(c$,"getAppletInfo",function(){var a=new java.util.Hashtable;a.put("htmlName",this.vwr.htmlName);a.put("syncId",this.vwr.syncId);a.put("fullName",this.vwr.fullName);a.put("codeBase",""+JV.Viewer.appletCodeBase);this.vwr.isApplet()&&(a.put("documentBase",JV.Viewer.appletDocumentBase),a.put("registry",this.vwr.sm.getRegistryInfo()));a.put("version",JV.JC.version);a.put("date",JV.JC.date);a.put("javaVendor",JV.Viewer.strJavaVendor);
a.put("javaVersion",JV.Viewer.strJavaVersion+(!this.vwr.isJS?"":this.vwr.isWebGL?"(WebGL)":"(HTML5)"));a.put("operatingSystem",JV.Viewer.strOSName);return a});h(c$,"getAnimationInfo",function(){var a=this.vwr.am,c=new java.util.Hashtable;c.put("firstModelIndex",Integer.$valueOf(a.firstFrameIndex));c.put("lastModelIndex",Integer.$valueOf(a.lastFrameIndex));c.put("animationDirection",Integer.$valueOf(a.animationDirection));c.put("currentDirection",Integer.$valueOf(a.currentDirection));c.put("displayModelIndex",
Integer.$valueOf(a.cmi));null!=a.animationFrames&&(c.put("isMovie",Boolean.TRUE),c.put("frames",JU.Escape.eAI(a.animationFrames)),c.put("currentAnimationFrame",Integer.$valueOf(a.caf)));c.put("displayModelNumber",this.vwr.getModelNumberDotted(a.cmi));c.put("displayModelName",0<=a.cmi?this.vwr.getModelName(a.cmi):"");c.put("animationFps",Integer.$valueOf(a.animationFps));c.put("animationReplayMode",a.animationReplayMode.name());c.put("firstFrameDelay",Float.$valueOf(a.firstFrameDelay));c.put("lastFrameDelay",
Float.$valueOf(a.lastFrameDelay));c.put("animationOn",Boolean.$valueOf(a.animationOn));c.put("animationPaused",Boolean.$valueOf(a.animationPaused));return c});h(c$,"getBoundBoxInfo",function(){var a=this.vwr.ms.getBoxInfo(null,1).getBoundBoxPoints(!0),c=new java.util.Hashtable;c.put("center",JU.P3.newP(a[0]));c.put("vector",JU.V3.newV(a[1]));c.put("corner0",JU.P3.newP(a[2]));c.put("corner1",JU.P3.newP(a[3]));return c});h(c$,"getShapeInfo",function(){var a=new java.util.Hashtable,c=new JU.SB,f=this.vwr.shm.shapes;
if(null!=f)for(var b=0;36>b;++b){var d=f[b];if(null!=d){var e=JV.JC.shapeClassBases[b],d=d.getShapeDetail();null!=d&&a.put(e,d)}}0<c.length()&&a.put("shapeCommands",c.toString());return a});h(c$,"getAuxiliaryInfo",function(a){return this.vwr.ms.getAuxiliaryInfo(this.vwr.ms.getModelBS(this.vwr.getAtomBitSet(a),!1))},"~O");h(c$,"getAnnotationInfo",function(a,c){var f=this.vwr.getAtomBitSet(a),f=this.vwr.ms.getModelBS(f,!1).nextSetBit(0);if(0>f)return null;var b=this.vwr.ms.getModelAuxiliaryInfo(f).get(1073741925==
c?"domains":"validation");if(null==b||6!=b.tok)return null;this.vwr.getAnnotationParser().initializeAnnotation(b,c,f);return b.getMap().get("_list")},"~O,~N");h(c$,"getMeasurementInfo",function(){return this.vwr.getShapeProperty(6,"info")});h(c$,"getMouseInfo",function(){if(!this.vwr.haveDisplay)return null;for(var a=new java.util.Hashtable,c=new JU.Lst,f=this.vwr.actionManager,b,d=f.b.getBindings().values().iterator();d.hasNext()&&((b=d.next())||1);)q(b,Boolean)||(JU.PT.isAI(b)&&(b=[JV.binding.Binding.getMouseActionName(b[0],
!1),JV.ActionManager.getActionName(b[1])]),c.addLast(b));a.put("bindings",c);a.put("bindingName",f.b.name);a.put("actionNames",JV.ActionManager.actionNames);a.put("actionInfo",JV.ActionManager.actionInfo);a.put("bindingInfo",JU.PT.split(f.getBindingInfo(null),"\n"));return a});m(c$,"getPdbAtomData",function(a,c){if(0==this.vwr.ms.ac||0>a.nextSetBit(0))return"";null==c&&(c=this.vwr.getOutputChannel(null,null));var f=this.vwr.ms.at,b=this.vwr.ms.am,d=f[a.nextSetBit(0)].mi,e=-1,g="%6.2Q%6.2b ";
if("PQR".equals(c.getType())){for(var g="%8.4P%7.4V ",j=0,h=a.nextSetBit(0);0<=h;h=a.nextSetBit(h+1))j+=f[h].getPartialCharge();c.append("REMARK 1 PQR file generated by Jmol "+JV.Viewer.getJmolVersion()).append("\nREMARK 1 created "+new java.util.Date).append("\nREMARK 1 Forcefield Used: unknown\nREMARK 1").append("\nREMARK 5").append("\nREMARK 6 Total charge on this protein: "+j+" e\nREMARK 6\n")}for(var h=a.length()-1,l=(j=d!=f[h].mi)?null:new JU.SB,d=b[d].isPdbWithMultipleBonds,
k,m=new JU.P3,h=a.nextSetBit(0);0<=h;h=a.nextSetBit(h+1)){var n=f[h];j&&n.mi!=e&&(-1!=e&&c.append("ENDMDL\n"),e=n.mi,c.append("MODEL "+(e+1)+"\n"));var q=n.getAtomName();k=2==n.getElementSymbol().length||4<=q.length||Character.isDigit(q.charAt(0));var t=b[n.mi].isBioModel,q=n.isHetero();k=t?q?k?JM.LabelToken.compile(this.vwr,"HETATM%5.-5i %-4.4a%1A%3.-3n %1c%4.-4R%1E %8.3x%8.3y%8.3z"+g,"\x00",null):JM.LabelToken.compile(this.vwr,"HETATM%5.-5i %-3.3a%1A%3.-3n %1c%4.-4R%1E %8.3x%8.3y%8.3z"+
g,"\x00",null):k?JM.LabelToken.compile(this.vwr,"ATOM %5.-5i %-4.4a%1A%3.-3n %1c%4.-4R%1E %8.3x%8.3y%8.3z"+g,"\x00",null):JM.LabelToken.compile(this.vwr,"ATOM %5.-5i %-3.3a%1A%3.-3n %1c%4.-4R%1E %8.3x%8.3y%8.3z"+g,"\x00",null):k?JM.LabelToken.compile(this.vwr,"HETATM%5.-5i %-4.4a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z"+g,"\x00",null):JM.LabelToken.compile(this.vwr,"HETATM%5.-5i %-3.3a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z"+g,"\x00",null);var r=n.getElementSymbolIso(!1).toUpperCase();c.append(JM.LabelToken.formatLabelAtomArray(this.vwr,
n,k,"\x00",null,m)).append(1==r.length?" "+r:r.substring(0,2)).append(" \n");if(!j&&(!t||q||d))if(t=n.getBonds(),null!=t)for(k=0;k<t.length;k++){var u=n.getAtomNumber(),s=t[k].getOtherAtom(n);if(a.get(s.i)&&(r=t[k].getCovalentOrder(),!(1==r&&d&&!q)))switch(s=s.getAtomNumber(),r){case 2:case 3:if(s<u)continue;case 1:l.append("CONECT").append(JU.Txt.formatStringI("%5i","i",u));for(u=0;u<r;u++)l.append(JU.Txt.formatStringI("%5i","i",s));l.appendC("\n")}}}j?c.append("ENDMDL\n"):c.append(l.toString());
return c.toString()},"JU.BS,JU.OC");m(c$,"getPdbData",function(a,c,f,b,d,e){this.vwr.ms.isJmolDataFrameForModel(a)&&(a=this.vwr.ms.getJmolDataSourceFrame(a));if(0>a)return"";var g=this.vwr.ms.am[a],j=g.isBioModel;if(null==b&&!j)return null;null==d&&(d=this.vwr.getOutputChannel(null,null));var h=new JU.SB,l=0<=c.indexOf("draw"),k=null,m=new JU.BS,n="\x00",q=this.vwr.ms.getLabeler().compile(this.vwr,"ATOM %-6i%4a%1A%3n %1c%4R%1E ","\x00",null);if(null==b)n=11<c.length&&0<=c.indexOf("quaternion ")?
c.charAt(11):"R",g.getPdbData(this.vwr,c,n,l,f,d,q,h,m),k=this.vwr.getModelUndeletedAtomsBitSet(a);else{k=b[0];a=b[1];var g=b[2],t=b[3],r=null!=t,u=b[4],s=b[5],w=b[6];b=b[7];d.append("REMARK 6 Jmol PDB-encoded data: ").append(c).append(";\n");d.append("REMARK 6 Jmol data").append(" min = ").append(JU.Escape.eP(u)).append(" max = ").append(JU.Escape.eP(s)).append(" unScaledXyz = xyz * ").append(JU.Escape.eP(w)).append(" + ").append(JU.Escape.eP(b)).append(";\n");c=null;b=this.vwr.ms.at;u=new JU.P3;
s=k.nextSetBit(0);for(w=0;0<=s;s=k.nextSetBit(s+1),w++){var v=a[w],x=g[w],y=r?t[w]:0;if(!Float.isNaN(v)&&!Float.isNaN(x)&&!Float.isNaN(y)){var z=b[s];d.append(JM.LabelToken.formatLabelAtomArray(this.vwr,z,q,"\x00",null,u));j&&m.set(s);d.append(JU.Txt.sprintf("%-8.2f%-8.2f%-10.2f %6.3f %2s %s\n","ssF",[z.getElementSymbolIso(!1).toUpperCase(),"",[v,x,y,0]]));null!=c&&c.getPolymerIndexInModel()==z.getPolymerIndexInModel()&&h.append("CONECT").append(JU.Txt.formatStringI("%5i","i",c.getAtomNumber())).append(JU.Txt.formatStringI("%5i",
"i",z.getAtomNumber())).appendC("\n");c=z}}}d.append(h.toString());if(l)return d.toString();f.and(k);j&&e&&d.append("\n\n"+this.vwr.ms.getProteinStructureState(m,!1,"R"==n,1));return d.toString()},"~N,~S,JU.BS,~A,JU.OC,~B");m(c$,"getModelCml",function(a,c,f){var b=new JU.SB;if(0==JU.BSUtil.cardinalityOf(a))return"";J.api.Interface.getInterface("JU.XmlUtil");JU.XmlUtil.openTag(b,"molecule");JU.XmlUtil.openTag(b,"atomArray");for(var d=new JU.BS,e=this.vwr.ms.at,g=a.nextSetBit(0);0<=g&&!(0>--c);g=a.nextSetBit(g+
1)){var h=e[g],m=h.getAtomName();JU.PT.rep(m,'"',"''");d.set(h.i);JU.XmlUtil.appendTag(b,"atom/",["id","a"+(h.i+1),"title",h.getAtomName(),"elementType",h.getElementSymbol(),"x3",""+h.x,"y3",""+h.y,"z3",""+h.z])}JU.XmlUtil.closeTag(b,"atomArray");if(f){JU.XmlUtil.openTag(b,"bondArray");a=this.vwr.getBondCount();c=this.vwr.ms.bo;for(g=0;g<a;g++)f=c[g],e=f.atom2,d.get(f.atom1.i)&&d.get(e.i)&&(e=JU.Edge.getCmlBondOrder(f.order),null!=e&&JU.XmlUtil.appendTag(b,"bond/",["atomRefs2","a"+(f.atom1.i+1)+" a"+
(f.atom2.i+1),"order",e]));JU.XmlUtil.closeTag(b,"bondArray")}JU.XmlUtil.closeTag(b,"molecule");return b.toString()},"JU.BS,~N,~B");B(c$,"atomExpression","<atom selection>");c$.propertyTypes=c$.prototype.propertyTypes="appletInfo;;;fileName;;;fileHeader;;;fileContents;<pathname>;;fileContents;;;animationInfo;;;modelInfo;<atom selection>;{*};ligandInfo;<atom selection>;{*};shapeInfo;;;measurementInfo;;;centerInfo;;;orientationInfo;;;transformInfo;;;atomList;<atom selection>;(visible);atomInfo;<atom selection>;(visible);bondInfo;<atom selection>;(visible);chainInfo;<atom selection>;(visible);polymerInfo;<atom selection>;(visible);moleculeInfo;<atom selection>;(visible);stateInfo;<state type>;all;extractModel;<atom selection>;(visible);jmolStatus;statusNameList;;jmolViewer;;;messageQueue;;;auxiliaryInfo;<atom selection>;{*};boundBoxInfo;;;dataInfo;<data type>;types;image;<width=www,height=hhh>;;evaluate;<expression>;;menu;<type>;current;minimizationInfo;;;pointGroupInfo;<atom selection>;(visible);fileInfo;<type>;;errorMessage;;;mouseInfo;;;isosurfaceInfo;;;isosurfaceData;;;consoleText;;;JSpecView;<key>;;scriptQueueInfo;;;nmrInfo;<elementSymbol> or 'all' or 'shifts';all;variableInfo;<name>;all;domainInfo;<atom selection>;{visible};validationInfo;<atom selection>;{visible}".split(";");
B(c$,"PROP_APPLET_INFO",0,"PROP_FILENAME",1,"PROP_FILEHEADER",2,"PROP_FILECONTENTS_PATH",3,"PROP_FILECONTENTS",4,"PROP_ANIMATION_INFO",5,"PROP_MODEL_INFO",6,"PROP_LIGAND_INFO",7,"PROP_SHAPE_INFO",8,"PROP_MEASUREMENT_INFO",9,"PROP_CENTER_INFO",10,"PROP_ORIENTATION_INFO",11,"PROP_TRANSFORM_INFO",12,"PROP_ATOM_LIST",13,"PROP_ATOM_INFO",14,"PROP_BOND_INFO",15,"PROP_CHAIN_INFO",16,"PROP_POLYMER_INFO",17,"PROP_MOLECULE_INFO",18,"PROP_STATE_INFO",19,"PROP_EXTRACT_MODEL",20,"PROP_JMOL_STATUS",21,"PROP_JMOL_VIEWER",
22,"PROP_MESSAGE_QUEUE",23,"PROP_AUXILIARY_INFO",24,"PROP_BOUNDBOX_INFO",25,"PROP_DATA_INFO",26,"PROP_IMAGE",27,"PROP_EVALUATE",28,"PROP_MENU",29,"PROP_MINIMIZATION_INFO",30,"PROP_POINTGROUP_INFO",31,"PROP_FILE_INFO",32,"PROP_ERROR_MESSAGE",33,"PROP_MOUSE_INFO",34,"PROP_ISOSURFACE_INFO",35,"PROP_ISOSURFACE_DATA",36,"PROP_CONSOLE_TEXT",37,"PROP_JSPECVIEW",38,"PROP_SCRIPT_QUEUE_INFO",39,"PROP_NMR_INFO",40,"PROP_VAR_INFO",41,"PROP_DOM_INFO",42,"PROP_VAL_INFO",43,"PROP_COUNT",44,"readableTypes"," stateinfo extractmodel filecontents fileheader image menu minimizationInfo".split(" "))})})(Clazz,
Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.makeConstructor,Clazz.defineEnumConstant,Clazz.exceptionOf,Clazz.newIntArray,Clazz.defineStatics,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,Clazz.p0p,Clazz.pu$h,Clazz.newShortArray,Clazz.innerTypeInstance,Clazz.isClassDefined,Clazz.prepareCallback,
Clazz.newArray,Clazz.castNullAs,Clazz.floatToShort,Clazz.superCall,Clazz.decorateAsType,Clazz.newBooleanArray,Clazz.newCharArray,Clazz.implementOf,Clazz.newDoubleArray,Clazz.overrideConstructor,Clazz.clone,Clazz.doubleToShort,Clazz.getInheritedLevel,Clazz.getParamsType,Clazz.isAF,Clazz.isAI,Clazz.isAS,Clazz.isASS,Clazz.isAP,Clazz.isAFloat,Clazz.isAII,Clazz.isAFF,Clazz.isAFFF,Clazz.tryToSearchAndExecute,Clazz.getStackTrace,Clazz.inheritArgs,Clazz.alert,Clazz.defineMethod,Clazz.overrideMethod,Clazz.declareAnonymous,
Clazz.cloneFinals);